我正在研究多层感知器算法,我正在将python代码转换为golang。
我有2个矩阵。我们称之为矩阵M1:
[[0 0 1 1]
[0 1 0 1]]
我们称之为矩阵M2:
[[ 0.00041597 0.02185088 -0.00362142]
[-0.00057384 -0.02866677 0.00488404]
[-0.00056316 -0.02705587 0.00410378]
[ 0.00048268 0.01692128 -0.00262183]]
我在python中实现了dotProduct(M1,M2),它给了我这个结果
[[ -8.04778516e-05 -1.01345901e-02 1.48194623e-03]
[ -9.11603819e-05 -1.17454886e-02 2.26221011e-03]]
我在Golang中使用相同的输入矩阵(M1,M2),但golang代码返回此矩阵:
[[-8.047785157755936e-05 -0.010134590118173147 0.0014819462317188985]
[-9.116038191682538e-05 -0.011745488603430228 0.0022622101145935328]]
在python我使用numpy的点操作:
resultMatrix = M1.dot(M2)
在go,我正在使用这个package来处理矩阵 这里的问题是因为我用golang计算了其他dotProcut calculos并且一切正常
我用其他值进行N次测试,我在我的代码的其他部分使用这个包(相同的dotProduct方法),一切都没问题
qazxsw poi qazxsw poi My Go code at line 128在第30行实现了golang dot产品
python中的代码不是我的,因为这个代码是用葡萄牙语编写的,但我的代码是用英文编写的
在python我知道这是正确的,因为所有的神经网络运作良好,但在我不确定
我多次阅读矩阵go包方法并且没有得到“bug代码实现”,有人知道我哪里错了?
嗯,实际上结果几乎是一样的。可能会让你感到困惑的是格式化不同但仍然是Python的Tutorial Python code at line 61 = Matrix golang package method(参见-1.01345901e-02
,特别是它的E-notation“部分),它与Go的-0.0101345901
非常接近,只是为了清楚地让它们对齐它们
Scientific notation
因此,如果您的代码中存在任何问题,它们可能来自除矩阵乘法之外的其他来源。