【问题标题】:How to specify regularization parameter (L1 or L2) for a feed forward neural network in R using the mxnet package?如何使用 mxnet 包为 R 中的前馈神经网络指定正则化参数(L1 或 L2)?
【发布时间】:2017-12-28 16:04:57
【问题描述】:

我正在使用 R mxnet 包。这是我目前正在使用的代码块。但我不确定如何指定正则化。

dpLnModel <- mx.model.FeedForward.create(symbol             = out,
                                         X                  = trainX,
                                         y                  = trainY,
                                         ctx                = mx.cpu(),
                                         num.round          = numIter,
                                         eval.metric        = mx.metric.rmse,
                                         array.batch.size   = 50,
                                         array.layout       = "rowmajor",
                                         verbose            = TRUE,
                                         optimizer          = "rmsprop",
                                         eval.data          = list(data  = testX,
                                                                   label = testY
                                         ),
                                         initializer        = mx.init.normal(initValVar),
                                         epoch.end.callback = mx.callback.log.train.metric(5, logger)
)

【问题讨论】:

  • 文档怎么说?似乎在文档中给出了该选项,或者如果没有,那么大概不是一个选项。

标签: r neural-network deep-learning mxnet


【解决方案1】:

正如@leezu 的回答所说,您需要设置权重衰减以获得 L2 正则化。在 R API 中,您需要的参数是 wd 例如

dpLnModel <- mx.model.FeedForward.create(symbol             = out,
                                         X                  = trainX,
                                         y                  = trainY,
                                         ctx                = mx.cpu(),
                                         num.round          = numIter,
                                         eval.metric        = mx.metric.rmse,
                                         array.batch.size   = 50,
                                         array.layout       = "rowmajor",
                                         verbose            = TRUE,
                                         optimizer          = "rmsprop",
                                         wd                 = 0.00001)

我认为您可以包含来自mx.opt.rmsprop 的任何参数。请注意,那里的文档说wd 的默认值为零,即没有正则化。

【讨论】:

    【解决方案2】:

    您可以设置优化器的weight_decay 选项。权重衰减相当于给参数添加一个全局 l2 正则化器。

    optimizer = mx.SGD(lr=0.1, momentum=0.9, weight_decay=0.00001)
    

    我不太熟悉 R API,但从 Python API 来看,我希望您在 mx.fit(model, optimizer, train_provider, n_epoch=20, eval_data=eval_provider) 中指定优化器,其中第一个参数是 mx.FeedForward 模型而不是 mx.FeedForward.create

    请参阅文档了解更多信息:https://media.readthedocs.org/pdf/mxnet-test/latest/mxnet-test.pdf

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2020-01-17
      • 2017-05-08
      相关资源
      最近更新 更多