我正在使用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)
)
您可以设置优化器的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
正如@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
的默认值为零,即没有正则化。