【问题标题】:WEKA and Scikit-Learn Multilayer Perceptron Gives Different ResultWEKA 和 Scikit-Learn 多层感知器给出不同的结果
【发布时间】:2018-09-04 13:12:04
【问题描述】:

大家

我目前正在使用多层感知器进行研究。 我以前使用 WEKA 运行过这个,但由于各种原因我已经迁移到 python 中的 scikit-learn。

我试图将我在 WEKA 中的预测结果复制到 scikit-learn,因此我制作了一个具有完全相同学习率、动量、隐藏层等的精确感知器 然而,这两个平台的预测结果不同。谁能给我一些关于这件事的解释?

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

最好的问候

【问题讨论】:

    标签: python scikit-learn weka


    【解决方案1】:

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

    【讨论】:

    • 非常感谢您的回答:您所说的一切都使用反向传播,这让我意识到我不确定 WEKA 实际使用哪种优化器。我知道它使用梯度下降。我只是不知道它使用什么样的梯度下降。与 SGD 是否相同,或者它是否有某种差异可能会影响我的预测结果,目前我仍然不知道。
    • 我不熟悉 WEKA,浏览一下文档也没有太大帮助 - 如果您无法选择优化算法,它可能不是一个很好的深度学习平台。 NN 很棒,因为它们可以对任何函数进行建模,但它们也很难训练。我建议您使用 PyTorch 或 TensorFlow 以获得更大的灵活性(和支持!)。
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 2016-05-04
    • 2013-10-30
    • 2015-10-25
    • 1970-01-01
    • 2021-12-15
    • 2017-03-18
    • 2012-10-31
    相关资源
    最近更新 更多