2016-07-08 3 views
3

テンソルフローを使用しており、tf.saver()メソッドを使用して、いくつかのモデルをトレーニングし、各エポック後に保存しています。私はモデルを保存してロードすることができ、通常の方法でこれをやっています。Tensorflow、チェックポイントファイルがありません。セーバーはチェックポイントを5つだけ保持できますか?

with tf.Graph().as_default(), tf.Session() as session: 
    initialiser = tf.random_normal_initializer(config.mean, config.std) 

    with tf.variable_scope("model",reuse=None, initializer=initialiser): 
     m = a2p(session, config, training=True) 

    saver = tf.train.Saver() 
    ckpt = tf.train.get_checkpoint_state(model_dir) 
    if ckpt and tf.gfile.Exists(ckpt.model_checkpoint_path) 
     saver.restore(session, ckpt.model_checkpoint_path) 
    ... 
    for i in range(epochs): 
     runepoch() 
     save_path = saver.save(session, '%s.ckpt'%i) 

私のコードは、それに応じてラベル付けされるべき各エポックのためにモデルを保存するように設定されています。しかし、私は15回の訓練の後に、最後の5つのエポック(10,11,12,13,14)のチェックポイントファイルしか持っていないことに気付きました。ドキュメンテーションはこれについて何も言わないので、私はなぜそれが起こっているのか迷っています。

セーバーは5つのチェックポイントを保持できるだけですか、何か間違っていますか?

すべてのチェックポイントが保持されていることを確認する方法はありますか?

+0

5はデフォルトで、私はほとんどの場合、好む「keep_checkpoint_every_n_hours」引数もありセーバーコンストラクタ –

答えて

7

あなたがmax_to_keep引数を設定することによって、あなたcreate your Saver objectがデフォルトに5

saver = tf.train.Saver(max_to_keep=10000) 
+2

でそれをカスタマイズすることができます。 – etarion

+0

最初にデフォルトがある理由を理解できません。「セーバー」を使用すると、何かを保存するために、私は明示的に保存したいものを捨てたいのですか? –

+0

@gokul_ufモデルに多数のパラメータがある場合、チェックポイントは非常に大きくなる可能性があります。私は、デフォルトのストレージスペースの不足を避けるために選択されていると仮定します。それは私が推測する2つの悪の間のトレードオフです。 – Styrke

1

が実際セーバーがすべてのチェックポイントを維持しますmax_to_keep=Noneを設定し保存するためにどのように多くのチェックポイントを選択することができます。例えばのために 。、

saver = tf.train.Saver(max_to_keep=None) 
関連する問題