擅长:python、mysql、java
<p>如果[batch_size,z,x,y]是目标矩阵的形状,另一个解决方案是在每个位置用适当的元素构建两个这种形状的矩阵,然后应用元素乘法。它可以很好地处理一批向量:</p>
<pre><code># input matrices
batch_size = 2
x1 = torch.Tensor([0,1])
x2 = torch.Tensor([[0,1,2],
[3,4,5]])
x1 = x1.unsqueeze(0).repeat((batch_size, 1))
x2 = x2.unsqueeze(0).repeat((batch_size, 1, 1))
# dimensions
b = x1.shape[0]
z = x1.shape[1]
x = x2.shape[1]
y = x2.shape[2]
# solution
mat1 = x1.reshape(b, z, 1, 1).repeat(1, 1, x, y)
mat2 = x2.reshape(b,1,x,y).repeat(1, z, 1, 1)
mat1*mat2
</code></pre>