我在python中实现神经网络,作为反向传播的一部分,我需要将3D矩阵,称为A,维度(200, 100, 1)
乘以2D矩阵,称之为W,维度{{1结果应该有尺寸(100, 200)
。
A是错误向量,W是权重矩阵,产品用于计算前一层的更新。
我尝试使用(200, 200, 1)
(matrix_multiply
)解决它,我尝试将W重塑为(100,200,1)然后再乘以,但是抛出
from numpy.core.umath_tests
。
我该如何解决这个问题?
答案 0 :(得分:3)
您可以使用np.tensordot
,然后使用swapaxes
或仅reshape
或
np.tensordot(A,W,axes=((1),(0))).swapaxes(1,2)
np.tensordot(A,W,axes=((1),(0))).reshape(A.shape[0],W.shape[1],1)
或者,我们可以使用np.dot
使用A
的最后一个轴上的唯一切片,然后在矩阵乘法后延伸到3D
-
A[:,:,0].dot(W)[...,None]
或者我们可以使用np.einsum
-
np.einsum('ijk,jl->ilk',A,W)