维度变换
1.view = reshape
view变化的前提是保证整个tensor的size不变。
注:所做的合并必须有物理意义!2、Squeeze(减少维度)/unsqueeze(增加维度)
Squeeze是将没有参数的位置挤压。
3、expand / repeat
expand :只是改变理解方式,并没有增加数据,只有在必要的时候拷贝数据
repeat:增加了数据
expand:只有维度是1的才能扩张,-1 表示维度不变
repeat:每一个维度要增强的次数
4、.t(转置)仅仅适用于矩阵
5、transpose
contiguous( )函数让数据变得连续。
transpose会把数据的维度打乱,所以要用contiguous()
六、permute
broadcast自动拓展
特点:
1)自带Expand
2)without copying data默认从最后一个维度开始匹配
已知:feature map[4,32,14,14]
bias:[32]
则:
bias[32]->[32,1,1] 这一步需要自己手工做 -->[1,32,1,1]–>[4,32,14,14]
使用条件:
如果当前维度为1(列表),expand to same
如果当前维度是0(标量),插入一维,expand to same
否则,not broadcasting-able
example 1:
[4,32,14,14]
[1,32,1,1] ->[4,32,14,14]
example 2 :
[4,32,14,14]
[14,14]->[1,1,14,14]->[4,32,14,14]
example 3(not broadcasting-able):
[4,32,14,14]
[2,32,14,14]
拼接与拆分
拼接
1、cat
cat(需要合并的tensor , 需要合并的维度)
“32”、“8”这两项要一致2、stack
创建新的维度
同理,注意没有操作的项要一致。
拆分
3、split
根据长度进行拆分
split(拆分的长度 , 拆分的维度)
如果拆分的长度不一样,要用list表示
4、chunk
根据数量进行拆分
数据运算
base
1、add
2、sub
3、mul、div
矩阵相乘
1、matmul
注意:torch.mm:仅适用于2d矩阵相乘,不建议使用,建议使用matmul来计算矩阵乘法*: 表示相同位置上元素相乘
matmul(@):表示矩阵相乘
降维过程
基本函数
1、使用pow,其作用等价于 : a ** num
2、sqrt等价于pow(a,1/2)
3、rsqrt是对平方根求导
4、exp()
5、log()
6、tensor.floor():向下取整
7、tensor.ceil():向上取整
8、tensor.trunc():把一个浮点数裁剪出整数部分
9、tensor.frac():把一个浮点数裁剪出小数部分
10、tensor.round():四舍五入
11、tensor.clamp():裁剪
1)tensor.clamp(min):对于小于tensor中的数如果小于min就修改成min
2)tensor.clamp(min,max):对于tensor中的数值,如果大于max都修改成max