矩阵dotProduct与python的不同结果

时间:2018-02-28 22:44:02

标签: arrays math go matrix

我正在研究多层感知器算法,我正在将python代码转换为golang。

我有2个矩阵。我们称这个矩阵为M1:

[[ 0.00041597  0.02185088 -0.00362142]
 [-0.00057384 -0.02866677  0.00488404]
 [-0.00056316 -0.02705587  0.00410378]
 [ 0.00048268  0.01692128 -0.00262183]]

我们称之为矩阵M2:

[[ -8.04778516e-05  -1.01345901e-02   1.48194623e-03]
 [ -9.11603819e-05  -1.17454886e-02   2.26221011e-03]]

我在python中实现了dotProduct(M1,M2),它给了我这个结果

[[-8.047785157755936e-05 -0.010134590118173147 0.0014819462317188985]
 [-9.116038191682538e-05 -0.011745488603430228 0.0022622101145935328]]

我在golang中使用相同的输入矩阵(M1,M2) 但golang代码返回此矩阵:

resultMatrix = M1.dot(M2)

在python中我正在使用numpy的点操作:

{{1}}

在go中,我正在使用此package来处理矩阵 这里的问题是因为我用golang计算其他dotProcut calculos并且一切正常

我用其他值进行N次测试,我在我的代码的其他部分使用这个包(相同的dotProduct方法),一切都很好

My Go code at line 128
Tutorial Python code at line 61
{30}在第30行实现golang dotProduct

python中的代码不是我的,因为这个代码是用葡萄牙语编写的,但我的代码是用英文写的

在python中,我知道这是正确的,因为所有的神经网络运行良好,但是在去,我不确定

我多次阅读矩阵go包方法并且没有得到“bug代码实现”,有人知道我哪里错了?

1 个答案:

答案 0 :(得分:4)

嗯,实际上结果几乎是一样的。可能让您感到困惑的是格式不同但仍然是Python -1.01345901e-02 = -0.0101345901(请参阅Scientific notation,特别是其E-notation"部分)靠近Go -0.010134590118173147并且只是为了清楚地让它们对齐

Python -1.01345901e-02
Go   -0.010134590118173147

因此,如果您的代码中存在任何问题,它们可能来自除矩阵乘法之外的其他来源。