0
Saver documentationでは、セーバーオブジェクトはリストまたはディクショナリを入力として使用でき、ディクショナリの場合は、変数を保存または復元するために使用される名前でなければなりません。私は、次のようなコードがあります。テンソルフローセーバーに辞書を渡す
create_network()
vars_to_load_list = ...
vars_to_load_dict = {v.name:v for v in vars_to_load_list}
loader = tf.train.Saver(var_list=vars_to_load_list, max_to_keep=FLAGS.max_epoch)
path = ...
latest_ckpt = tf.train.latest_checkpoint(path, latest_filename=None)
sess = tf.Session()
ckpt = tf.train.get_checkpoint_state(path)
if ckpt and ckpt.model_checkpoint_path:
loader.restore(sess, save_path=latest_ckpt)
上記のコードは動作しますが、しかし、私の代わりにvaribleリストの変数辞書に渡した場合、すなわちにloader
のdefenitionを変更:
loader = tf.train.Saver(var_list=vars_to_load_dict, max_to_keep=FLAGS.max_epoch)
その後、NotFoundError
が表示され、ローダーはチェックポイントファイルにTensorの名前が見つからないと不満を表明します。しかし、私は両方のバージョンのコードが同じように動作することを期待しています。何か不足していますか?