2016-06-01 3 views
4

Ich führe das cifar10-Netzwerk auf meinem PC aus und nach Abschluss des Trainings und des laufenden eval-Skripts erscheint folgender Fehler:tensorflow cifar10_eval.py Fehler: RuntimeError: Versuch, eine geschlossene Session zu verwenden. RuntimeError: Versucht, eine geschlossene Sitzung zu verwenden.

2016-06-01 14:37:14.238317: precision @ 1 = 0.000 
Traceback (most recent call last): 

    File "<ipython-input-1-adf2ca85bb77>", line 1, in <module> 
    runfile('/home/kang/Documents/work_code_PC1/py_tensorflow_learning/cifar10CNN_test/cifar10_eval_test.py', wdir='/home/kang/Documents/work_code_PC1/py_tensorflow_learning/cifar10CNN_test') 

    File "/usr/lib/python3/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile 
    execfile(filename, namespace) 

    File "/usr/lib/python3/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 85, in execfile 
    exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace) 

    File "/home/kang/Documents/work_code_PC1/py_tensorflow_learning/cifar10CNN_test/cifar10_eval_test.py", line 107, in <module> 
    tf.app.run() 

    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/platform/default/_app.py", line 30, in run 
    sys.exit(main(sys.argv)) 

    File "/home/kang/Documents/work_code_PC1/py_tensorflow_learning/cifar10CNN_test/cifar10_eval_test.py", line 104, in main 
    evaluate() 

    File "/home/kang/Documents/work_code_PC1/py_tensorflow_learning/cifar10CNN_test/cifar10_eval_test.py", line 94, in evaluate 
    eval_once(saver, summary_writer, top_k_op, summary_op) 

    File "/home/kang/Documents/work_code_PC1/py_tensorflow_learning/cifar10CNN_test/cifar10_eval_test.py", line 72, in eval_once 
    coord.join(threads, stop_grace_period_secs = 10) 

    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/training/coordinator.py", line 264, in join 
    six.reraise(*self._exc_info_to_raise) 

    File "/usr/lib/python3/dist-packages/six.py", line 659, in reraise 
    raise value 

    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/training/queue_runner.py", line 185, in _run 
    sess.run(enqueue_op) 

    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/client/session.py", line 315, in run 
    return self._run(None, fetches, feed_dict) 

    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/client/session.py", line 473, in _run 
    raise RuntimeError('Attempted to use a closed Session.') 

RuntimeError: Attempted to use a closed Session. 

Was bedeutet die geschlossene Sitzung? Sollen die train.py und eval.py gleichzeitig laufen? Ich bin neu in tensorflow und geben Sie mich nach den Demo-Codes https://www.tensorflow.org/versions/r0.8/tutorials/deep_cnn/index.html

+0

Funktioniert es, wenn die Skripte außerhalb von ipython läuft? –

+0

Ich gebe python3 cifar10_eval_test.py in das Terminal ein. Es hat auch den gleichen Fehler: RuntimeError: Es wurde versucht, eine geschlossene Sitzung zu verwenden. –

+0

Woher kommt das Python-Skript? Können Sie einen Link bitte geben –

Antwort

5

bei the code you posted suchen, ist das Problem zwischen den Linien 50 und 51 in eval_once():

with tf.Session() as sess: 
    ckpt = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir) 
    if ckpt and ckpt.model_checkpoint_path: 
     saver.restore(sess, ckpt.model_checkpoint_path) 
     global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1] 
    else: 
     print('No checkpoint file found') 
     return 
# <<< The Session is closed here >>> 
coord = tf.train.Coordinator() 
try: 
    # ... 

Wenn der Code verlässt einen with tf.Session() as sess: Block, sess ist automatisch geschlossen, und Sie können es nicht mehr verwenden. Es gibt (mindestens) zwei Möglichkeiten, dieses Problem zu beheben:

  1. einrücken Leitungen 51 through 76 um 4 Plätze, so dass sie auch im Inneren des with Block sind.

  2. Erstellen Sie die Sitzung, ohne einen with Block zu verwenden und es manuell schließen:

    def eval_once(): 
        sess = tf.Session() 
        ckpt = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir) 
        if ckpt and ckpt.model_checkpoint_path: 
         saver.restore(sess, ckpt.model_checkpoint_path) 
         global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1] 
        else: 
         print('No checkpoint file found') 
         sess.close() 
         return 
    
        coord = tf.train.Coordinator() 
        try: 
         # ... 
        finally: 
         sess.close() 
    
+0

Vielen Dank. Es klappt. –

Verwandte Themen