从 torch7 的检查点恢复 CNN 的训练

Posted

技术标签:

【中文标题】从 torch7 的检查点恢复 CNN 的训练【英文标题】:Resuming Training of CNN from checkpoint in torch7 【发布时间】:2017-09-13 10:49:14 【问题描述】:

我正在训练一个 CNN。在总时期结束时,我实现了大约 0.001 l2 损失并保存了一个检查点。现在,当我想恢复训练时,我加载了检查点,我开始的错误大于 0.008。

这是我保存检查点的方式:

paths.mkdir('checkpointsR3')
parametersR, gradParametersR = nil, nil -- nil them to avoid spiking memory
if epoch % 50 == 0 then
     util.save('checkpointsR3/' .. opt.name .. '_' .. (epoch+1000) .. '_net_R.t7', netR, opt.gpu)
end

这是我加载检查点的方式:

-- load Residual Learner
assert(opt.net ~= '', 'provide a generator model')
netR = util.load(opt.net, opt.gpu)
netR:evaluate()

util是从soumith chintala's dcgan.torch直接使用的lua文件。

我想知道我哪里出错了,为什么 l2 损失比我在那个检查点训练它时要高。我检查了我正在加载训练有素的检查点,但我仍然收到更高的错误。

【问题讨论】:

【参考方案1】:

知道了。 这是一个错误:

netR:evaluate()

此处的 torch 文档 Documentation 指出,如果想要恢复训练,则应使用 training() 而不是 evaluate(),因为它为训练和测试以不同的方式初始化 BatchNormalization 层。

【讨论】:

以上是关于从 torch7 的检查点恢复 CNN 的训练的主要内容,如果未能解决你的问题,请参考以下文章

如何从检查点使用 tf.estimator.Estimator 进行预测?

Huggingface Transformer - GPT2 从保存的检查点恢复训练

无法从 keras 中的检查点模型恢复训练

Keras:恢复训练的加载检查点模型会降低准确性吗?

恢复预训练模型的 TensorFlow 检查点文件

AI - TensorFlow - 示例05:保存和恢复模型