大家
我目前正在使用Multilayer perceptron进行研究。我之前使用WEKA运行它,但我已经因为各种原因迁移到了python中的scikit-learn。
我试图在WEKA中重现我的预测结果以进行scikit-learn所以我使用完全相同的学习率,动量,隐藏层等制作了精确的感知器。然而,预测结果对于这两个平台都有所不同。有人可以就此事给我一些解释吗?
我注意到的唯一一点是scikit learn使用lbfgs,adam和sgd来优化其连接权重,而WEKA使用反向传播。但这可能是唯一的原因吗?或者还有其他原因吗?
最好的祝福
如果您使用不同的优化器训练神经网络,它肯定会给出不同的结果。这种差异可能很小或很大。所有NN优化算法都使用反向传播 - 即,LBFGS,Adam和SGD都使用反向传播。此外 - 一般情况下 - 两次训练相同的NN可能永远不会给你完全相同的结果 - 这是因为大多数优化器(至少是值得花时间的那些)采取部分随机步骤。