一、数据类型
- 标量
- 向量(dim表示维度)
- shape:属性值,显示tensor的维度信息
numel():返回tensor的元素总数
dim():返回tensor维度值
二、创建Tensor
- 注:小写的tensor传入实际的数据内容,大写的Tensor与FloatTensor接收的是shape值(但也可以接收实际的数据内容)。建议使用小写的形式
- numpy转Tensor
-
python的List转tensor
-
未初始化的tensor定义
注意:Torch.empty()传入shape值,生成随机初始化的值(注意覆盖随机值)
-
tensor()的默认数值类型设置方法
-
随机初始化(初始化 W 与 b)**
-
rand():生成[0,1]上均匀分布的随机张量;
*_like():使用指定的tensor的shape创建对应的tensor
-
randn():生成N(0,1)的正态分布的初始化权重张量
-
full():生成指定大小与值的权重张量
-
arange():生成指定起止、间隔的数组张量
-
linspace():生成指定起止、包含个数的张量
-
logspace():生成指定底数(默认为:10)的指数值
-
生成常用型矩阵张量的API:ones() — 全1矩阵、zeros() — 全0矩阵、eys() —单位矩阵
- randperm():随机打散,对于0到指定数字的所有数字进行打散操作
三、索引与切片
-
连续切片
-
间隔切片数据
-
index_select(param1,param2):方法实现切片
param1:表示对哪个维度上进行操作(eg. 图中维度为4,可取0-3)
param2:表示切片的范围(传入tensor,取起始到终止位前一个位置)
-
… :表示任意维度(可以简化切片写法)
-
mask方法作用是提取出满足指定大小区间的元素值(但会将结果变为一维)
四、维度变换
- view()与reshape()功能一致,只要保证元素总数在变换前后一致
# view(size[])
# 设置为-1表示自动缩减为一维
x = torch.tensor(4,1,28,28)
x.view(-1,28*28) # 将4*1缩减为一维=4
- unsqueeze():执行加入新维度操作
-
举例说明(设计偏置b的维度)
-
squeeze():可以压缩维度(仅能压缩维度为1的dim通道)
-
扩展操作
Expand:是基于广播机制的一种扩展,是默认支持的(eg. [1,32,1,1] -> [4,32,14,14]) 推荐
repeat:是一种主动将数值复制然后进行操作
-
矩阵转置操作
注意:t()只能用于2维的转置
-
transpose():指定维度通道之间的交换
-
contiguous():用于对于转置后的矩阵进行连续化(即:原来是行向量,转置后为列向量,需要将数据结构保持一致)
-
eq():判断两个tensor的对应元素是否相等,每个对应位置都会生成一个Bool值
-
all():对于tensor中所有元素位置均为,True时才为True
- permute():直接设定新的dim的顺序 推荐