tensorflow cifar10_eval.py 错误:运行时错误:尝试使用关闭的会话.运行时错误:尝试使用关闭的会话 [英] tensorflow cifar10_eval.py error:RuntimeError: Attempted to use a closed Session.RuntimeError: Attempted to use a closed Session

查看:18
本文介绍了tensorflow cifar10_eval.py 错误:运行时错误:尝试使用关闭的会话.运行时错误:尝试使用关闭的会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm running the cifar10 network on my PC and after finishing the training and running eval script the following error appears:

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

what does the closed Session mean? Should the train.py and eval.py run at the same time? I am new in tensorflow and type myself according to the demo codes https://www.tensorflow.org/versions/r0.8/tutorials/deep_cnn/index.html

推荐答案

Looking at the code you posted, the problem is between lines 50 and 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:
    # ...

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

When the code exits a with tf.Session() as sess: block, sess is automatically closed, and you cannot use it any more. There are (at least) two ways to fix this problem:

  1. 缩进第 51 行 byra76" rela76"空格,以便它们也位于 with 块内.

在不使用 with 块的情况下创建会话并手动关闭它:

Create the session without using a with block and close it manually:

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

这篇关于tensorflow cifar10_eval.py 错误:运行时错误:尝试使用关闭的会话.运行时错误:尝试使用关闭的会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆