numpy数组的多维矩阵乘法

时间:2017-02-11 15:11:39

标签: python numpy matrix machine-learning neural-network

我在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

我该如何解决这个问题?

1 个答案:

答案 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)