訓練を受けたモデル(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として保存するだけです。オプティマイザや学習率がどのように関係しているかわかりません。
答えをありがとう。しかし、なぜ私はテンソルをインポートしなければならないのか混乱しています。これは以前はAdam Optimizerで損失を計算していました。オプティマイザに関係なく、同じモデルパラメータであれば、損失は同じであると思われます。 –
私は私の答えに変更を加えました、これがより明確であることを望みます。そのため、AdamからSGDへオプティマイザのタイプを変更するだけです。 –