提问人:Reza Aalaei 提问时间:11/13/2021 更新时间:11/13/2021 访问量:88
如何编织 pytorch 张量
How to weave a pytorch tensor
问:
我有两个矩阵
A = torch.tensor([[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]])
B = torch.tensor([[2,2,2,2,2],
[2,2,2,2,2],
[2,2,2,2,2]]
我想将两个矩阵连接起来,使 matric C 变成:
C = torch.tensor([[1,2,1,2,1,2,1,2],
[1,2,1,2,1,2,1,2],
[1,2,1,2,1,2,1,2]])
我认为如果 A 转换为:
torch.tensor([[1,0,1,0,1,0,1,0],
[1,0,1,0,1,0,1,0],
[1,0,1,0,1,0,1,0]])
B 转换为:
torch.tensor([[0,2,0,2,0,2,0,2],
[0,2,0,2,0,2,0,2],
[0,2,0,2,0,2,0,2]])
然后将它们相加。有什么办法可以做到这一点吗?提前致谢
答:
0赞
Ivan
11/13/2021
#1
您可以通过转置、堆叠和转置的组合来实现这一点:
堆栈转置张量:
>>> torch.stack((A.T, B.T), 1) tensor([[[1, 1, 1], [2, 2, 2]], [[1, 1, 1], [2, 2, 2]], [[1, 1, 1], [2, 2, 2]], [[1, 1, 1], [2, 2, 2]], [[1, 1, 1], [2, 2, 2]]])
再次转置:
>>> torch.stack((A.T, B.T), 1).transpose(1, 2) tensor([[[1, 2], [1, 2], [1, 2]], [[1, 2], [1, 2], [1, 2]], [[1, 2], [1, 2], [1, 2]], [[1, 2], [1, 2], [1, 2]], [[1, 2], [1, 2], [1, 2]]])
重塑为最终形式:
>>> torch.stack((A.T, B.T), 1).transpose(1, 2).reshape(A.size(0), A.size(1)*2) tensor([[1, 2, 1, 2, 1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]])
评论