Есть ли способ использовать оптимизатор Nadam на scikit-learn MLPClassifier? - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь использовать разные оптимизаторы для MLPClassifier scikit-learn . Насколько показывают их документы, есть только несколько solvers (параметр оптимизатора MLPClassifier), а именно:

  • 'lbfgs' - оптимизатор в семействе квазиньютонов Методы.
  • 'sgd' относится к градиентному спуску c.
  • 'Адам' относится к оптимизатору на основе градиента c, предложенному Кингмой, Дидериком и Джимми Ба

Я пытаюсь использовать еще один, называемый Надам . Я пытался смешать некоторые параметры, чтобы добиться этого с solver='adam' и nesterovs_momentum=True, но в документации Склерна сказано, что последний параметр используется только для sgd:

Использовать ли импульс Нестерова , Используется только когда solver = 'sgd' и импульс> 0.

Я пробовал вышеупомянутое, потому что я думал, что это означало то, что Нарас Кераса сказал:

Так же, как Адам - ​​это RMSprop с импульсом, Nadam - RMSprop с Nesterov.

Из-за всего этого я не думаю, что поступаю правильно. Мой код ниже показывает, что я сделал до сих пор.

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

1 Ответ

0 голосов
/ 20 февраля 2020

Вы не можете предоставить nesterovs_momentum для adam оптимизатора.

Чтобы увидеть это, вам нужно взглянуть на BaseMultilayerPerceptron код на github.

Сравнить параметры принятый SGDOptimizer с принятым AdamOptimizer .

Вы увидите, что adam просто не принимает nesterovs_momentum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...