pytorch学习笔记(三)--张量的高阶操作

Broadingcasting自动扩展

特点:
实现维度扩展
不需要拷贝数据
原理:
先在高维度上un squeeze一个维度,然后将维度为1的expend到相对应的维度
pytorch学习笔记(三)--张量的高阶操作_第1张图片
使用条件:
从低维度开始匹配所以如果操作是中间维度的运算,则需要手动unsqueeze低维度为1.

  1. 对应运算的维度要么为1,为1表示适用于所有其他维度
  2. 对应运算的维度与另一个操作数据的对应维度相同
  3. 对应维度不存在,空值,broadcast会自动unsqueeze

如:A = [class][students][scores] = [4][32][8]

B1 = [1]
此时表示对每个班的每个学生的每门课程分数都加1分

B2 = [8]
此时表示对每个班的每个学生的八门课程加上对应的分数(如:01010340)

B3 = [32][1]
因为要对student进行操作,所有低维度的1需要手动unsqueeze

B4 = [4]
此时不满足条件,无法判断是哪四门课程

拼接与拆分

cat()拼接

在原来的基础上叠加

in: a = torch.rand(4, 32, 8)
in: b = torch.rand(5, 32, 8) #除拼接维度外其他维度保持一致
in: torch.cat([a, b], dim=0).shape
out: torch.Size([9, 32, 8])

dim表示的是在第几个维度拼接,其他维度保持一致

stack()

创建一个新的维度

in: b = torch.rand(4, 32, 8)
in: c = torch.stack([a,b], dim = 0)
in: print(c.shape)
out: torch.Size([2, 4, 32, 8])

两个数据的维度必须完全一样,此时c[0]表示a,c[1]表示b

split()

根据长度拆分
pytorch学习笔记(三)--张量的高阶操作_第2张图片
拆分的长度一定要足够

你可能感兴趣的:(pytorch学习笔记(三)--张量的高阶操作)