特点:
实现维度扩展
不需要拷贝数据
原理:
先在高维度上un squeeze一个维度,然后将维度为1的expend到相对应的维度
使用条件:
从低维度开始匹配所以如果操作是中间维度的运算,则需要手动unsqueeze低维度为1.
如:A = [class][students][scores] = [4][32][8]
B1 = [1]
此时表示对每个班的每个学生的每门课程分数都加1分
B2 = [8]
此时表示对每个班的每个学生的八门课程加上对应的分数(如:01010340)
B3 = [32][1]
因为要对student进行操作,所有低维度的1需要手动unsqueeze
B4 = [4]
此时不满足条件,无法判断是哪四门课程
在原来的基础上叠加
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表示的是在第几个维度拼接,其他维度保持一致
创建一个新的维度
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