矩阵点产品与python的结果不同

问题描述 投票:0回答:1

我正在研究多层感知器算法,我正在将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代码实现”,有人知道我哪里错了?

arrays math go matrix
1个回答
4
投票

嗯,实际上结果几乎是一样的。可能会让你感到困惑的是格式化不同但仍然是Python的Tutorial Python code at line 61 = Matrix golang package method(参见-1.01345901e-02,特别是它的E-notation“部分),它与Go的-0.0101345901非常接近,只是为了清楚地让它们对齐它们

Scientific notation

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

© www.soinside.com 2019 - 2024. All rights reserved.