tensorflow cifar10_eval.py错误:RuntimeError:尝试使用封闭的Session.RuntimeError:尝试使用封闭的Session

发布于 2021-01-29 17:28:07

我在PC上运行cifar10网络,完成培训并运行eval脚本后,出现以下错误:

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.

闭门会议是什么意思?train.py和eval.py是否应该同时运行?我是tensorflow的新手,并根据演示代码https://www.tensorflow.org/versions/r0.8/tutorials/deep_cnn/index.html键入自己

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    查看您发布的代码,问题出在第50和51行之间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:
        # ...
    

    当代码退出一个with tf.Session() as sess:块时,sess它会自动关闭,您将无法再使用它。有(至少)两种方法可以解决此问题:

    1. 将第51到76行缩进4个空格,以便它们也位于with块内。

    2. 在不使用with阻止的情况下创建会话并手动将其关闭:

      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()
      


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看