我想加载预先训练的模型(由AdadeltaOptimizer优化)并继续使用SGD(GradientDescentOptimizer)进行培训。该模型被保存,加载tensorlayer API:Tensorflow加载预先训练的模型使用不同的优化器
保存模型:
import tensorlayer as tl
tl.files.save_npz(network.all_params,
name=model_dir + "model-%d.npz" % global_step)
负荷模型:
load_params = tl.files.load_npz(path=resume_dir + '/', name=model_name)
tl.files.assign_params(sess, load_params, network)
如果我继续adadelta培训,培训的损失(交叉熵)看起来正常(作为加载的模型开始接近值)。但是,如果我将优化器更改为SGD,则培训损失将与新初始化的模型一样大。
我看了一下tl.files.save_npz
的model-xxx.npz
文件。它只会将所有模型参数保存为ndarray。我不确定优化程序或学习率如何涉及此处。
感谢您的回答。但我很困惑,为什么我必须导入张量,“它计算以前在Adam Optimizer上的损失”。无论优化器如何,在相同的模型参数下,损失应该是相同的,对吧? –
我对我的答案做了修改,希望这个更清楚。实际上,我只是将优化器的类型从Adam更改为SGD。 –