PyTorch自用笔记(第二周-基础篇)

PyTorch基础

  • 一、基本数据类型-张量
    • Python与PyTorch中基本数据类型的对比
    • `类型检查`
    • `标量`
    • `维度检查`
    • `维度为1的向量`
    • `维度为2的向量`
    • `维度为3的向量`
    • `维度为4的向量`
  • 二、创建Tensor
    • `从numpy引入数据`
    • `从list引入数据`
    • `向量初始化`
    • `向量随机初始化`
    • `randn`-正态分布
    • `full` # 向量中元素初始化为同一个值
    • `arange`-等差数列
    • `linspace/logspace`
    • `ones/zeros/eye`
    • `randperm` - 随机打散
  • 三、索引与切片
    • `索引`
    • `select first/last N`
    • `select by steps`
    • `select by specific index`
    • `...`-代表任意多维度
    • `select by mask`-掩码索引
    • `select by flatten index`-take
  • 四、维度变换
    • `view`
    • `squeeze/unsqueeze`-减/增维度
    • `expand/repeat`-维度扩展
    • `transpose/t/permute`
    • `broadcasting`-维度扩展

一、基本数据类型-张量

Python与PyTorch中基本数据类型的对比

PyTorch自用笔记(第二周-基础篇)_第1张图片
string在PyTorch中的表示方式有两种:
1.One-hot编码[0, 1, 0, 0, …],但该方式不能体现词与词之间的相关性
2.Embedding(略)
常用内建数据类型:

CPU GPU
torch.FloatTensor torch.cuda.FloatTensor
torch.IntTensor torch.cuda.IntTensor
torch.ByteTensor torch.cuda.ByteTensor

类型检查

PyTorch自用笔记(第二周-基础篇)_第2张图片

标量

PyTorch自用笔记(第二周-基础篇)_第3张图片

维度检查

PyTorch自用笔记(第二周-基础篇)_第4张图片
注:shape是数据成员;而size()是成员函数

维度为1的向量

PyTorch自用笔记(第二周-基础篇)_第5张图片
注1:维度为1的向量常用于表示偏置(Bias)和线性层输入
注2:dim/rank和size/shape的区分:
dim表示维度;在数学中为rank
size是指tensor的具体形状

维度为2的向量

PyTorch自用笔记(第二周-基础篇)_第6张图片
注:维度为2的向量常用于线性batch输入

维度为3的向量

PyTorch自用笔记(第二周-基础篇)_第7张图片
注:维度为3的向量常用于RNN batch输入(RNN常用于NLP)

维度为4的向量

CNN:[batch, channel, height, width]
补充:
PyTorch自用笔记(第二周-基础篇)_第8张图片

二、创建Tensor

从numpy引入数据

PyTorch自用笔记(第二周-基础篇)_第9张图片

从list引入数据

PyTorch自用笔记(第二周-基础篇)_第10张图片

向量初始化

Torch.empty(d1, d2, ...)
Torch.FloatTensor(d1, d2, ...)
Torch.IntTensor(d1, d2, ...)

注:Tensor默认为FloatTensor,修改方式如下

torch.set_default_tensor_type(torch.DoubleTensor)  # 将默认改为Double类型

向量随机初始化

‘rand’-均匀分布
PyTorch自用笔记(第二周-基础篇)_第11张图片

randn-正态分布

PyTorch自用笔记(第二周-基础篇)_第12张图片

full # 向量中元素初始化为同一个值

PyTorch自用笔记(第二周-基础篇)_第13张图片

arange-等差数列

PyTorch自用笔记(第二周-基础篇)_第14张图片

linspace/logspace

PyTorch自用笔记(第二周-基础篇)_第15张图片

ones/zeros/eye

PyTorch自用笔记(第二周-基础篇)_第16张图片

randperm - 随机打散

PyTorch自用笔记(第二周-基础篇)_第17张图片

三、索引与切片

索引

PyTorch自用笔记(第二周-基础篇)_第18张图片

select first/last N

: 可理解为箭头,左闭右开
PyTorch自用笔记(第二周-基础篇)_第19张图片

select by steps

PyTorch自用笔记(第二周-基础篇)_第20张图片

select by specific index

PyTorch自用笔记(第二周-基础篇)_第21张图片

...-代表任意多维度

PyTorch自用笔记(第二周-基础篇)_第22张图片

select by mask-掩码索引

PyTorch自用笔记(第二周-基础篇)_第23张图片
缺点:最终生成的维度为1,长度不确定

select by flatten index-take

PyTorch自用笔记(第二周-基础篇)_第24张图片
注:其实就是取特定元素,只不过最后的结果维度为1

四、维度变换

view

PyTorch自用笔记(第二周-基础篇)_第25张图片

squeeze/unsqueeze-减/增维度

unsqueeze-增加维度
PyTorch自用笔记(第二周-基础篇)_第26张图片
example
PyTorch自用笔记(第二周-基础篇)_第27张图片
squeeze-删除维度
PyTorch自用笔记(第二周-基础篇)_第28张图片

expand/repeat-维度扩展

注:功能一样,推荐expand,因为它不主动复制数据,节省内存
expand
PyTorch自用笔记(第二周-基础篇)_第29张图片
repeat
PyTorch自用笔记(第二周-基础篇)_第30张图片
注:memory touched,故不建议使用

transpose/t/permute

t()-矩阵转置
PyTorch自用笔记(第二周-基础篇)_第31张图片
transpose-维度交换
PyTorch自用笔记(第二周-基础篇)_第32张图片
permute-维度交换
PyTorch自用笔记(第二周-基础篇)_第33张图片
---------------------------------------------------------------进阶--------------------------------------------------------------------------------

broadcasting-维度扩展

  • 自动扩展维度
  • 不需要拷贝数据;节省空间
    使用过程:
  • 初始维度是1,值为1
  • 从后面的维度(小维度)开始对齐/匹配
  • 每次在最前面插入一个维度,知道与目标对齐
  • 扩展值为1的维度
  • 其他情况,则不满足使用broadca条件

你可能感兴趣的:(PyTorch自用笔记(第二周-基础篇))