我想加載預先訓練的模型(由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。 –