numpy einsum:3D 矩阵和 2D 矩阵之间的元素乘积
numpy einsum: Elementwise product between 3D matrix and 2D matrix
我有两个 numy 矩阵:
- 形状为 (N,M,d) 的 A
- B 的形状为 (N,d)
因此,我试图以这样的方式获得形状为 (N,M,d) 的矩阵,以便在 B 和 A 的每个元素(即 M 元素)之间进行元素明智的乘积。我使用 numpy 的 einsum 如下:
product = np.einsum('ijk,ik->ijk', A, B)
我得到了好的形状,但我怀疑操作有误,我没有按预期做元素明智的产品。
我对 einsum 的使用正确吗?
I am trying to get a Matrix with shape (N,M,d) in such manner that I do element wise product between B and each element of A (which are M elements).
您尝试执行的操作是在 A
(M 尺寸)-
轴 = 1 上的广播元素乘积
C1 = A * B[:,None,:]
您可以随时进行快速测试,以检查您期望的结果是否实际上是您已实施的结果。
A = np.random.randint(0,5,(2,3,1)) # N,M,d
B = np.random.randint(0,5,(1,1)) # N,d
C2 = np.einsum('ijk,ik->ijk', A, B)
print(C2)
[[[4]
[0]
[8]]
[[4]
[4]
[4]]]
仔细检查两个操作是否相等=
np.allclose(C1, C2)
##True
有关 np.einsum
工作原理的更多详细信息,请参见 。
我有两个 numy 矩阵:
- 形状为 (N,M,d) 的 A
- B 的形状为 (N,d)
因此,我试图以这样的方式获得形状为 (N,M,d) 的矩阵,以便在 B 和 A 的每个元素(即 M 元素)之间进行元素明智的乘积。我使用 numpy 的 einsum 如下:
product = np.einsum('ijk,ik->ijk', A, B)
我得到了好的形状,但我怀疑操作有误,我没有按预期做元素明智的产品。
我对 einsum 的使用正确吗?
I am trying to get a Matrix with shape (N,M,d) in such manner that I do element wise product between B and each element of A (which are M elements).
您尝试执行的操作是在 A
(M 尺寸)-
C1 = A * B[:,None,:]
您可以随时进行快速测试,以检查您期望的结果是否实际上是您已实施的结果。
A = np.random.randint(0,5,(2,3,1)) # N,M,d
B = np.random.randint(0,5,(1,1)) # N,d
C2 = np.einsum('ijk,ik->ijk', A, B)
print(C2)
[[[4]
[0]
[8]]
[[4]
[4]
[4]]]
仔细检查两个操作是否相等=
np.allclose(C1, C2)
##True
有关 np.einsum
工作原理的更多详细信息,请参见