2017-04-13 15 views
2

私はtensorflowで神経ネットワークコードを書いています。私は1000エポックごとに変数を保存するようにしました。したがって、私は、異なるファイルに対して、第1001回、2001年、第3001回の変数を保存することを期待しています。 以下のコードは私が作成した保存関数です。Tensorflow saverは既存の保存された変数ファイルを上書きするようです。

def save(self, epoch): 
    model_name = "MODEL_save" 
    checkpoint_dir = os.path.join(model_name) 

    if not os.path.exists(checkpoint_dir): 
     os.makedirs(checkpoint_dir) 
    self.saver.save(self.sess, checkpoint_dir + '/model', global_step=epoch) 
    self.saver.save(self.sess, checkpoint_dir + '/model') 
    print("path for saved %s" % checkpoint_dir) 

このコードは、関数が呼び出されると2回保存されました。なぜなら、 'global_step = epoch'を使って1000エポックごとに変数の履歴を保存したかったからです。また、エポックを指定しないで最新の変数をファイルに保存したかった。 エポック条件が以下のように満たされると、この関数が呼び出されます。現在のエポックを想定し

for epoch in xrange(self.m_total_epoch): 

    .... CODE FOR NEURAL NETWORK .... 

    if epoch%1000 == 1 and epoch != 1: 
     self.save(epoch) 

は、ファイルの一部だけが26001、27001、28001、29001からありますが、私はしかし1001年、2001年、3001 ... 29001.からディレクトリに保存されているすべてのファイルを期待して、29326です。私はそれが他のコンピュータで起こったことを確認した。それは私が期待していたものとは違う。それはなぜ起こるのですか?

答えて

2

tf.train.Saverは、コンストラクタ内に最新のモデルのみを保存したままにする引数を持ちます(max_to_keep)。そして、このmax_to_keep引数は多少驚いたことに、デフォルト値が5です。したがって、デフォルトでは、最新の5つのモデルのみがあります。

saver = tf.train.Saver(max_to_keep=None) 
+0

max_to_keep'が5であるとき、 'だけ最後に保存された変数をロードする方法:Noneにこの変数を設定し、すべてのモデルを維持するために

? –

関連する問題