【问题标题】:Is there a way to use Nadam optimizer on scikit-learn MLPClassifier?有没有办法在 scikit-learn MLPClassifier 上使用 Nadam 优化器?
【发布时间】:2020-02-19 23:00:48
【问题描述】:

我正在尝试对scikit-learn's MLPClassifier 使用不同的优化器。据他们的文档显示,只有几个solvers(MLPClassifier 的优化器参数)可用,它们是:

  • “lbfgs”是准牛顿方法系列中的优化器。
  • ‘sgd’指的是随机梯度下降。
  • “adam”指的是由 Kingma、Diederik 和 Jimmy Ba 提出的基于随机梯度的优化器

我正在尝试使用另一个名为Nadam 的工具。我尝试将一些参数与solver='adam'nesterovs_momentum=True 混合来实现它,但是sklearn 的文档说最后一个参数仅用于sgd

是否使用涅斯捷罗夫的动量。仅在solver='sgd' 且动量> 0 时使用。

我已经尝试了上述方法,因为我认为这意味着 keras's nadam 所说的:

就像 Adam 本质上是带有动量的 RMSprop,Nadam 是带有 Nesterov 动量的 RMSprop。

由于这一切,我不认为我在做正确的事。下面的代码显示了我到目前为止所做的事情。

from sklearn.neural_network import MLPClassifier
clf = MLPClassifier(solver='adam', nesterovs_momentum=True,)

【问题讨论】:

    标签: python keras scikit-learn


    【解决方案1】:

    您不能将nesterovs_momentum 提供给adam 优化器。

    要查看此内容,您应该查看 github 上的 BaseMultilayerPerceptron 代码。

    比较SGDOptimizer 接受的参数和AdamOptimizer 接受的参数。

    您会看到adam 根本不接受nesterovs_momentum

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2018-01-09
      • 2018-04-17
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      相关资源
      最近更新 更多