WEKA和Scikit-Learn多层感知器给出不同的结果

时间:2018-09-04 04:54:00

标签: python scikit-learn weka

所有人

我目前正在使用多层感知器进行一项研究。 我以前使用WEKA来运行它,但是出于各种原因,我已经迁移到python中的scikit-learn。

我试图在WEKA中重现我的预测结果以进行scikit学习,所以我制作了一个精确的感知器,具有完全相同的学习率,动量,隐藏层等 但是,这两个平台的预测结果却有所不同。有人可以给我一些解释吗?

我唯一注意到的是scikit learning使用lbfgs,adam和sgd来优化其连接权重,而WEKA使用反向传播。但这可能是唯一的原因吗?还是还有其他原因?

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

如果使用不同的优化器训练神经网络,则肯定会得出不同的结果。这种差异可能很小或很大。所有NN优化算法都使用反向传播-即LBFGS,Adam和SGD都使用反向传播。而且-通常-两次训练同一个NN可能永远不会给您精确相同的结果-这是因为大多数优化器(至少是值得您花费时间的优化器)采取了部分随机步骤。