我在matlab主页上找到了以下示例(http://de.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html),即dot产品的结果 [6,15] [10,20] Tha与我的numpy结果不同。这是一个问题吗?
In [79]: W1 * W2
Out[79]:
array([[ 3., 0.],
[ 3., 20.]])
In [80]: W1
Out[80]:
array([[ 1., 2.],
[ 3., 4.]])
In [81]: W2
Out[81]:
array([[ 3., 0.],
[ 1., 5.]])
In [82]: np.dot(W1,W2)
Out[82]:
array([[ 5., 10.],
[ 13., 20.]])
答案 0 :(得分:3)
您从该链接获取了错误的数组,特别是W1
应该是
In [41]: W1
Out[41]:
array([[ 1., 3.],
[ 2., 4.]])
W2
就像它一样
In [42]: W2
Out[42]:
array([[ 3., 0.],
[ 1., 5.]])
In [43]: np.dot(W1, W2)
Out[43]:
array([[ 6., 15.],
[ 10., 20.]])
In [44]: W1*W2
Out[44]:
array([[ 3., 0.],
[ 2., 20.]])
现在,输出与Matlab输出匹配。
答案 1 :(得分:0)
当您使用W1 * W2时,您使用的是hadamard产品,它是元素产品,而np.dot是矩阵乘法。