2017-07-11 5 views
0

Ich möchte meinen Code so erweitern, dass, wenn ich den Code an irgendeinem Punkt beenden möchte, das Training sicher beendet und die Variablen gespeichert werden. Obwohl ich versucht habe, nach einer besseren Lösung zu suchen, denke ich, dass es eine gute Idee wäre, eine Ausnahme von KeyboardInterrupt zu finden.TensorFlow Wie kann ich das Training manuell beenden (KeyboardInterrupt)?

Wäre es jedoch sicher? Genauer gesagt, würde die folgende Code Arbeit:

with tf.Session() as sess  
    try: 
     for i in range(FLAGS.max_steps): 
      sess.run(train_op, feed_dict=some_feed_dictionary) 
      # Some other summary writing and evaluative operations 
    except KeyboardInterrupt: 
     print("Manual interrupt occurred.") 

    print('Done training for {} steps'.format(global_steps)) 
    save_path = saver.save(sess, 'Standard CNN', global_step=global_steps, write_meta_graph=False) 

Oder ist es unsicher und die Tastatur in beschädigten Sicherungsdateien führen kann, unter Berücksichtigung Interrupt in der Mitte jeden tensorflow Betriebes frei erfolgen soll? Gibt es eine angemessene Möglichkeit, dies zu tun?

Antwort

1

Ich persönlich benutze etwas sehr ähnliches, indem ich KeyboardInterrupt während des Trainings die ganze Zeit fangen, der einzige Unterschied ist ich "speichern" nach jedem sess.run Schritt (oder alle mehrere dieser Schritte), hatte nie Probleme damit.

Ich weiß nicht, die Antwort auf „ist es nicht sicher“, aber ich weiß, dass meine Methode zu vermeiden, auch gearbeitet, die Frage zu stellen ...

In Ihrem Code, der wie folgt aussehen:

with tf.Session() as sess  
    try: 
     for i in range(FLAGS.max_steps): 
      sess.run(train_op, feed_dict=some_feed_dictionary) 
      # Some other summary writing and evaluative operations 
      if i % save_steps == 0: 
       save_path = saver.save(sess, 'Standard CNN', global_step=global_steps, write_meta_graph=False) 
    except KeyboardInterrupt: 
     print("Manual interrupt occurred.") 
     print('Done training for {} steps'.format(global_steps)) 

Um zu klären, die save_steps Variable bestimmt, wie viele Schritte zwischen den Speichern.

Verwandte Themen