2017-07-13 4 views
2

文書には、チェックポイントパスのリストを渡す必要がありますが、リストを取得する方法は?ハードコーディング?いいえ、それはばかげた練習です。プロトコルバッファファイル(モデルディレクトリのcheckpointという名前のファイル)を解析すると、しかし、テンソルフローはパーサを実装していないのですか?私は自分で実装する必要がありますか? チェックポイントパスのリストを取得するのは良い方法ですか?tf.train.Saver()のメソッドrecover_last_checkpointsの使用方法?

最近では1つのことで困っていますので、この質問を提起します。ご存知のように、何日かの長いトレーニングが何らかの理由でクラッシュする可能性があり、最新のチェックポイントから回復する必要があります。

restorer = tf.train.Saver() 
restorer.restore(sess, latest_checkpoint) 

私はハードコードlatest_checkpoint、またはやや賢く、tf.train.latest_checkpoint()を使用することができます。私は、次のコードを記述する必要があるので、トレーニングを回復することは、簡単です。

しかし、私はトレーニングを修復した後に問題が発生します。クラッシュ前に作成された古いチェックポイントファイルはそこに残されます。 Saverは、1回の実行で作成されたチェックポイントファイルのみを管理します。以前に作成したチェックポイントファイルを管理して、自動的に削除されるようにして、毎回手動で削除する必要はありません。私はそのような繰り返しの仕事は本当にばかだと思う。

次に、tf.train.Saver()recover_last_checkpointsメソッドが見つかりました。これにより、Saverは古いチェックポイントを管理できます。しかし、使用するのは便利ではありません。だから良い解決策はありますか?

+1

どのように? – isarandi

+0

ああ、あなたは私の問題の人を解決する!それをどうやって見つけましたか?公式のAPIリファレンスは 'CheckpointState'クラスをまったく導入していません! :\ – Jim07

+0

ソースコードを掘り下げて見つけました。彼らは 'tf.train.latest_checkpoint()'でそれを使用しています。 – isarandi

答えて

1

コメントで@isarandiにより述べたように、最も簡単な方法は、最初に基本的に文書化されていない特徴であるall_model_checkpoi‌​nt_paths続いget_checkpoint_state‌を使用して、すべてのチェックポイント経路を回復することです。その後、のような最新の状態に復元することができます: `saver.recover_last_checkpoints(tf.train.get_checkpoint_state(your_checkpoint_dir).all_model_checkpoint_paths)`について

states = tf.train.get_checkpoint_state‌​(your_checkpoint_dir‌​) 
checkpoint_paths = states.all_model_checkpoi‌​nt_paths 
saver.recover_last_checkpoints(checkpoint_paths) 
関連する問題