生成张量a
#张量a 维度 3X4
a=th.tensor([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(a)
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
print(a.shape)
torch.Size([3, 4])
生成张量b
#生成张量b 维度3X4
b=th.tensor([[10,20,30,40],[50,60,70,80],[90,100,110,120]])
print(b)
tensor([[ 10, 20, 30, 40],
[ 50, 60, 70, 80],
[ 90, 100, 110, 120]])
print(b.shape)
torch.Size([3, 4])
分别在3个维度上拼接:
#dim=-1
tmd1=th.stack((a,b),dim=-1)
print(tmd1)
tensor([[[ 1, 10],
[ 2, 20],
[ 3, 30],
[ 4, 40]],
[[ 5, 50],
[ 6, 60],
[ 7, 70],
[ 8, 80]],
[[ 9, 90],
[ 10, 100],
[ 11, 110],
[ 12, 120]]])
print(tmd1.shape)
torch.Size([3, 4, 2])
可以这样理解(不一定与官方定义一致),上面的中括号一共有3层,分别是最里面一层比如[1,10],中间一层比如[[ 1, 10], [ 2, 20], [ 3, 30],[ 4, 40]],和最外边一层,这三层分别对应一个长方体的长宽高,最外层对应宽是3,中间层对应长方体长是4,最里层维度是2,就是正方体高是2
画一个三维张量图观察一下:
下面也是一样的道理
#dim=0
tmd2=th.stack((a,b),dim=0)
print(tmd2)
tensor([[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],
[[ 10, 20, 30, 40],
[ 50, 60, 70, 80],
[ 90, 100, 110, 120]]])
print(tmd2.shape)
torch.Size([2, 3, 4])
绘制对应的三维图:
tmd3=th.stack((a,b),dim=1)
print(tmd3)
tensor([[[ 1, 2, 3, 4],
[ 10, 20, 30, 40]],
[[ 5, 6, 7, 8],
[ 50, 60, 70, 80]],
[[ 9, 10, 11, 12],
[ 90, 100, 110, 120]]])
print(tmd3.shape)
torch.Size([3, 2, 4])
绘制对应的三维图
以上内容仅为个人学习过程中的总结,如果有错误,请批评指正!