2016-03-25 6 views
0

Ich habe ein großes Modell in Tensorflow Python ausgeführt. Aber ich habe es nicht in der Sitzung gespeichert. Jetzt, wo das Training vorbei ist, möchte ich die Variablen speichern. Ich mache folgendes:Speichern des Tensorflow-Modells nach dem Training ist abgeschlossen

saver=tf.train.Saver() 
with tf.Session(graph=graph) as sess: 
    save_path = saver.save(sess, "86_model.ckpt") 
    print("Model saved in file: %s" % save_path) 

Dies gibt zurück: ValueError: Keine Variablen zu speichern. Laut ihrer Website fehlt es an initialize_all_variables(). Die Dokumentation sagt wenig darüber aus, was genau das tut. Das Wort "initialisieren" macht mir Angst, ich möchte nicht alle meine trainierten Werte zurücksetzen. Kann ich mein Modell speichern, ohne es erneut auszuführen?

+0

'saver.save' speichert alles in' tf.get_collection (tf.GraphKeys.VARIABLES) '. Das ist eine Sammlung, die jedes Mal aktualisiert wird, wenn Sie eine Variable mit 'tf.Variable' oder' tf.get_variable' erstellen. Wie haben Sie Ihre Variablen erstellt? –

+0

Cool, danke zur Verdeutlichung, ich habe alle meine Variablen in einem Graph erstellt und dieses Netzwerk über 100K Iterationen trainiert, habe meinen Testfehler bekommen und die Sitzung ist geschlossen. Ich habe meine Variablen mit tf.Variable() erstellt. Ich möchte auf diese trainierten Variablen zugreifen und sie speichern, aber ich möchte nicht initialisieren, da ich davon ausgehe, dass meine trainierten Variablen zurückgesetzt werden. Ich folge Udacitys Kurs als Referenz. – plumSemPy

+0

Ja, wenn Sie die Sitzung schließen, verlieren Sie die Variablen –

Antwort

1

Es scheint wie aus der Tensorflow-Dokumentation, die "Sitzung" ist die Sache, die die Informationen aus dem trainierten Modell enthält. Also vermutlich haben Sie angerufen irgendwo sess.run(), um Ihr Modell zu trainieren - was Sie tun möchten, ist sess.save() Aufruf THAT-Sitzung, nicht eine neue, die Sie mit diesem Sparer-Objekt erstellen.

0

Wie wäre es mit skflow? Mit skflow (jetzt ist skflow in Tensorflow integriert) können Sie den Parameter model_dir auf Ihrem Konstruktor angeben und automatisch Ihr Modell während des Trainings speichern (es werden Checkpoints gespeichert, so dass Sie beim letzten Training vom letzten checkpool aus neu starten können).

+0

Es gibt dieses Problem mit skflow: http://stackoverflow.com/questions/36597519/adding-regularizer-to-skflow Ich endete mit Keras, arbeitete perfekt. – plumSemPy

1

Ich glaube, es ist, weil Sie nicht alle Ihre Variablen im Sparer initialisieren. Dies sollte funktionieren

with tf.Session() as sess: 
     tf.initialize_all_variables().run() 
     saver = tf.train.Saver(tf.all_variables()) 
    -------everything your session does ------------- 
     checkpoint_path = os.path.join(save_dir, 'model.ckpt') 
     saver.save(sess, checkpoint_path, global_step = your_global_step) 
Verwandte Themen