我想加载一个预训练模型(由 AdadeltaOptimizer 优化)并继续使用 SGD(GradientDescentOptimizer)进行训练。模型使用tensorlayer API保存和加载:
保存模型:
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,训练损失将与新初始化的模型一样大。
我model-xxx.npz
从tl.files.save_npz
. 它仅将所有模型参数保存为 ndarray。我不确定优化器或学习率是如何在这里涉及的。