我在正确地重塑从稀疏矩阵和输入相乘获得的这些列时遇到了麻烦。例如,假设我有以下形状的稀疏矩阵:torch.Size([2,972])
和形状为:torch.Size([108, 2])
,通过转换输入向量并进行点积,I获得大小为torch.Size([2, 9, 2]))
的TensorA,定义如下:
tensor([[[ 34480, 49811],
[ 62672, 72119],
[ 49617, 129834],
[ 58862, 69061],
[209598, 165029],
[157133, 144929],
[ 86957, 91814],
[205047, 228574],
[230294, 144340]],
[[ 31880, 73623],
[ 73641, 150267],
[ 91390, 112184],
[ 56916, 72953],
[227125, 192221],
[145567, 110968],
[ 83470, 77461],
[203651, 246334],
[258275, 117184]]]),
tensor.Size([2,9,2])
现在我想做的是将A重新塑造为大小为(2,2,3,3)的Tensor如下:
tensor([[[[ 34480, 62672, 49617],
[ 58862, 209598, 157133],
[ 86957, 205047, 230294]],
[[ 31880, 73641, 91390],
[ 56916, 227125, 145567],
[ 83470, 203651, 258275]]]])
tensor([[[[ 49811, 72119, 129834],
[ 69061, 165029, 144929],
[ 91814, 228574, 144340]],
[[ 73623, 150267, 112184],
[ 72953, 192221, 110968],
[ 77461, 246334, 117184]]]])
但是做A.reshape(2,2,3,3),我得到了这个:
tensor([[[[ 34480, 49811, 62672],
[ 72119, 49617, 129834],
[ 58862, 69061, 209598]],
[[165029, 157133, 144929],
[ 86957, 91814, 205047],
[228574, 230294, 144340]]],
[[[ 31880, 73623, 73641],
[150267, 91390, 112184],
[ 56916, 72953, 227125]],
[[192221, 145567, 110968],
[ 83470, 77461, 203651],
[246334, 258275, 117184]]]]))
如何正确地重塑A?
1条答案
按热度按时间bfhwhh0e1#
特别感谢@Chrysophylaxs解决了我的问题,我会在这里转发他的评论:
你可以使用
permute
来代替两次转置:A.permute(2, 0, 1).reshape(2, 2, 3, 3).
加油,继续编码!