Wenn Sie die Speicherfunktion auf Ihrem Speicher aufrufen, übergeben Sie ihm die tf.Session, mit der Sie das Modell trainiert haben. Dies enthält einen Verweis auf das Diagramm, das alle Variablen enthält. Verwechseln Sie Python-Variablen nicht mit Tensorflow-Variablen. Auch wenn Sie in Python keine Variable mehr haben, die auf eine von Ihnen erstellte Tensorflussvariable zeigt, ist sie immer noch vorhanden, wenn sie Teil des Berechnungsgraphen ist. Versuchen Sie nach dem Erstellen des Modells den folgenden Code auszuführen.
for v in tf.all_variables():
print(v.name)
Dadurch wird der Name jeder von Ihnen erstellten Variablen ausgegeben. Der Sparer wird standardmäßig alle diese speichern. Solange die Variablen denselben Namen haben, wenn Sie sie wiederherstellen, spielt es keine Rolle, wo sie erstellt wurden. Stellen Sie nur sicher, dass Sie die Wiederherstellung durchführen, nachdem alle Variablen zum Modell hinzugefügt wurden. Wenn Sie einer Variablen einen Initialisierer geben, wird die Initialisierung nur ausgeführt, wenn Sie sess.run(tf.initialize_all_variables())
aufrufen. Sie müssen dies nicht aufrufen, wenn Sie nur die Werte wiederherstellen. Ich benutze oft den folgenden Code.
sess = tf.Session()
saver = tf.train.Saver()
if 'restore' in sys.argv:
saver.restore(sess, '/media/chase/98d61322-9ea7-473e-b835-8739c77d1e1e/model.chk')
else:
sess.run(tf.initialize_all_variables())
Dieser Code funktioniert gut, wenn ich die thensorflow RNN Klassen verwenden, welche Variablen in sie erstellen.