Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算

维度变换

1.view = reshape
view变化的前提是保证整个tensor的size不变。
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第1张图片
注:所做的合并必须有物理意义!

2、Squeeze(减少维度)/unsqueeze(增加维度)
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第2张图片
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第3张图片
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第4张图片
Squeeze是将没有参数的位置挤压。
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第5张图片
3、expand / repeat
expand :只是改变理解方式,并没有增加数据,只有在必要的时候拷贝数据
repeat:增加了数据
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第6张图片
expand:只有维度是1的才能扩张,-1 表示维度不变
repeat:每一个维度要增强的次数
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第7张图片
4、.t(转置)仅仅适用于矩阵
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第8张图片
5、transpose
contiguous( )函数让数据变得连续。
transpose会把数据的维度打乱,所以要用contiguous()
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第9张图片
六、permute
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第10张图片
broadcast自动拓展
特点:
1)自带Expand
2)without copying data

默认从最后一个维度开始匹配
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第11张图片
已知: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]

借鉴:pytorch学习笔记4–pytorch数据类型

拼接与拆分

拼接

1、cat
cat(需要合并的tensor , 需要合并的维度)
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第12张图片“32”、“8”这两项要一致

2、stack
创建新的维度
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第13张图片
同理,注意没有操作的项要一致。

拆分

3、split
根据长度进行拆分
split(拆分的长度 , 拆分的维度)
如果拆分的长度不一样,要用list表示
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第14张图片
4、chunk
根据数量进行拆分
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第15张图片

数据运算

base
1、add
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第16张图片
2、sub
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第17张图片
3、mul、div
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第18张图片
矩阵相乘
1、matmul
注意:torch.mm:仅适用于2d矩阵相乘,不建议使用,建议使用matmul来计算矩阵乘法

*: 表示相同位置上元素相乘
matmul(@):表示矩阵相乘
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第19张图片
降维过程
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第20张图片
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第21张图片
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第22张图片
基本函数
1、使用pow,其作用等价于 : a ** num
2、sqrt等价于pow(a,1/2)
3、rsqrt是对平方根求导
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第23张图片
4、exp()
5、log()
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第24张图片
6、tensor.floor():向下取整
7、tensor.ceil():向上取整
8、tensor.trunc():把一个浮点数裁剪出整数部分
9、tensor.frac():把一个浮点数裁剪出小数部分
10、tensor.round():四舍五入
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第25张图片
11、tensor.clamp():裁剪
1)tensor.clamp(min):对于小于tensor中的数如果小于min就修改成min
2)tensor.clamp(min,max):对于tensor中的数值,如果大于max都修改成max
Pytorch 02天——维度变换、broadcast自动拓展、拼接与拆分、数据运算_第26张图片

你可能感兴趣的:(pytorch)