首页 > 解决方案 > 执行 torch.matmul() 时出现 RuntimeError

问题描述

我正在尝试实现注意力模型,但无法执行 matmul

torch.matmul(att, v)

att 和 v 的形状为:

att shape:torch.Size([20, 3, 128, 128])
v shape:torch.Size([20, 3, 128, 100])

我收到这样的错误:

RuntimeError:预期张量在维度 1 处的大小为 100,但参数 #2 'batch2' 的大小为 128(同时检查 bmm 的参数)

我还尝试通过 torch.randn 生成两个具有相同形状的张量并重复相同的操作并且没有出现错误。我不知道是什么导致了这样的错误

标签: runtime-errorpytorch

解决方案


也许内存和形状对齐的差异。如果您使用视图方法,您可以根据需要处理张量形状。但是内存上的数组没有被重塑。这有时会导致不清楚的问题。所以 contiguous() 或 reshape() 可以帮助你。

参考: https : //pytorch.org/docs/master/tensors.html?highlight=view#torch.Tensor.view pytorch 中的 reshape 和 view 有什么区别?


推荐阅读