私は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です。私はそれが他のコンピュータで起こったことを確認した。それは私が期待していたものとは違う。それはなぜ起こるのですか?
max_to_keep'が5であるとき、 'だけ最後に保存された変数をロードする方法:
None
にこの変数を設定し、すべてのモデルを維持するために? –