我正在使用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)
)
答案 0 :(得分: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
模型1}}。
有关详细信息,请参阅文档:https://media.readthedocs.org/pdf/mxnet-test/latest/mxnet-test.pdf
答案 1 :(得分: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
的默认值为零,即没有正则化。