维度变换

1.view = reshape

view变化的前提是保证整个tensor的size不变。

pytorch 增加新维度 pytorch扩展维度_取整


注:所做的合并必须有物理意义!2、Squeeze(减少维度)/unsqueeze(增加维度)

pytorch 增加新维度 pytorch扩展维度_数据_02


pytorch 增加新维度 pytorch扩展维度_pytorch_03


pytorch 增加新维度 pytorch扩展维度_pytorch 增加新维度_04


Squeeze是将没有参数的位置挤压。

pytorch 增加新维度 pytorch扩展维度_数据_05


3、expand / repeat

expand :只是改变理解方式,并没有增加数据,只有在必要的时候拷贝数据

repeat:增加了数据

pytorch 增加新维度 pytorch扩展维度_数据_06


expand:只有维度是1的才能扩张,-1 表示维度不变

repeat:每一个维度要增强的次数

pytorch 增加新维度 pytorch扩展维度_pytorch_07


4、.t(转置)仅仅适用于矩阵

pytorch 增加新维度 pytorch扩展维度_pytorch_08


5、transpose

contiguous( )函数让数据变得连续。

transpose会把数据的维度打乱,所以要用contiguous()

pytorch 增加新维度 pytorch扩展维度_矩阵相乘_09


六、permute

pytorch 增加新维度 pytorch扩展维度_pytorch 增加新维度_10


broadcast自动拓展

特点:

1)自带Expand

2)without copying data默认从最后一个维度开始匹配

pytorch 增加新维度 pytorch扩展维度_pytorch 增加新维度_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 增加新维度 pytorch扩展维度_取整_12

“32”、“8”这两项要一致2、stack

创建新的维度

pytorch 增加新维度 pytorch扩展维度_取整_13


同理,注意没有操作的项要一致。

拆分

3、split

根据长度进行拆分

split(拆分的长度 , 拆分的维度)

如果拆分的长度不一样,要用list表示

pytorch 增加新维度 pytorch扩展维度_取整_14


4、chunk

根据数量进行拆分

pytorch 增加新维度 pytorch扩展维度_pytorch_15

数据运算

base

1、add

pytorch 增加新维度 pytorch扩展维度_取整_16


2、sub

pytorch 增加新维度 pytorch扩展维度_pytorch_17


3、mul、div

pytorch 增加新维度 pytorch扩展维度_pytorch_18


矩阵相乘

1、matmul

注意:torch.mm:仅适用于2d矩阵相乘,不建议使用,建议使用matmul来计算矩阵乘法*: 表示相同位置上元素相乘

matmul(@):表示矩阵相乘

pytorch 增加新维度 pytorch扩展维度_pytorch_19


降维过程

pytorch 增加新维度 pytorch扩展维度_矩阵相乘_20


pytorch 增加新维度 pytorch扩展维度_pytorch 增加新维度_21


pytorch 增加新维度 pytorch扩展维度_矩阵相乘_22


基本函数

1、使用pow,其作用等价于 : a ** num

2、sqrt等价于pow(a,1/2)

3、rsqrt是对平方根求导

pytorch 增加新维度 pytorch扩展维度_取整_23


4、exp()

5、log()

pytorch 增加新维度 pytorch扩展维度_数据_24


6、tensor.floor():向下取整

7、tensor.ceil():向上取整

8、tensor.trunc():把一个浮点数裁剪出整数部分

9、tensor.frac():把一个浮点数裁剪出小数部分

10、tensor.round():四舍五入

pytorch 增加新维度 pytorch扩展维度_pytorch_25


11、tensor.clamp():裁剪

1)tensor.clamp(min):对于小于tensor中的数如果小于min就修改成min

2)tensor.clamp(min,max):对于tensor中的数值,如果大于max都修改成max

pytorch 增加新维度 pytorch扩展维度_pytorch 增加新维度_26