有没有办法在 MxNet 中保留训练器的内部变量?

Is there any way to preserve the internal variables of a trainer in MxNet?

我编写了一个程序,其中包含一种称为分布式随机梯度下降 (DRGD) 的算法。算法中有一些内部变量用于计算步长。训练算法应该比DRGD复杂得多,所以应该有更多的内部变量。如果我们保留这些变量,我们可以暂停训练并测试模型;然后,我们将再次恢复训练。

如果您想跨多个设备(GPU 或机器)存储一些数据,您可以使用 KVStore。这里是the tutorial如何使用它。

请注意,KVStore 被认为是一项相当高级的功能,应谨慎使用。

我不确定,但您在 MXNet 世界中所谓的 "Trainer" 可能实际上被称为 "Optimizer"。所以,请考虑阅读this API page

在使用 MXNet 进行训练期间,可以通过在 Trainer class 上调用 .save_states().load_states() 函数来保存训练器的状态并恢复训练胶子.

这是一个例子:

trainer = gluon.Trainer(net.collect_params(), 'adam')
trainer.save_states('training.states')
trainer.load_states('training.states')