我正在研究多层感知器算法,我正在将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代码实现”,有人知道我哪里错了?
答案 0 :(得分:4)
嗯,实际上结果几乎是一样的。可能让您感到困惑的是格式不同但仍然是Python -1.01345901e-02
= -0.0101345901
(请参阅Scientific notation,特别是其E-notation"部分)靠近Go -0.010134590118173147
并且只是为了清楚地让它们对齐
Python -1.01345901e-02
Go -0.010134590118173147
因此,如果您的代码中存在任何问题,它们可能来自除矩阵乘法之外的其他来源。