如何使用 mxnet 包为 R 中的前馈神经网络指定正则化参数(L1 或 L2)?
How to specify regularization parameter (L1 or L2) for a feed forward neural network in R using the mxnet package?
我正在使用 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
选项。 weight decay 相当于给参数加了一个全局的l2 regularizer
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
的默认值为零,即没有正则化。
我正在使用 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
选项。 weight decay 相当于给参数加了一个全局的l2 regularizer
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
的默认值为零,即没有正则化。