首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow,程序卡在sess.run( )函数上

Tensorflow,程序卡在sess.run( )函数上
EN

Stack Overflow用户
提问于 2017-09-16 12:17:06
回答 1查看 1.5K关注 0票数 1

我是坦索弗洛的新手,我遇到了一个问题。当我的程序到达x_batch = sess.run(X_mb)时,它被卡住了(所以,它可以打印1和2,但不能打印4,我猜它是一个没完没了的循环)。我打印X_mb的值,结果是Tensor("batch:0", shape=(32, 39), dtype=float32)。谁能帮我吗? Thx!mb_size = 32,g的形状是60366,39。

经修订的守则:

代码语言:javascript
复制
X = tf.placeholder(tf.float32, shape=[None, X_dim])

def sample_z(m, n):
    return np.random.uniform(-1., 1., size=[m, n])

g = tf.unstack(data, num = 60366, axis = 0)
X_mb, *_ = tf.train.batch(g ,mb_size, capacity = 60366)
sess = tf.train.MonitoredSession()


i = 0

for it in range(2000):
    #print(1)
    for _ in range(5):
        #print(2)       

        #print(X_mb)
        x_batch = sess.run(X_mb)
       # print(4)
        _, D_loss_curr, _ = sess.run(
            [D_solver, D_loss, clip_D],
            feed_dict={X: x_batch, z: sample_z(mb_size, z_dim)}
        )

    _, G_loss_curr = sess.run(
        [G_solver, G_loss],
        feed_dict={z: sample_z(mb_size, z_dim)}
    )

以下是错误消息:

代码语言:javascript
复制
runfile('/Users/franklan123/.spyder-py3/temp.py', wdir='/Users/franklan123/.spyder-py3')
Traceback (most recent call last):

  File "<ipython-input-4-6af95f06eb7f>", line 1, in <module>
    runfile('/Users/franklan123/.spyder-py3/temp.py', wdir='/Users/franklan123/.spyder-py3')

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 688, in runfile
    execfile(filename, namespace)

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 101, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "/Users/franklan123/.spyder-py3/temp.py", line 48, in <module>
    X = tf.placeholder(tf.float32, shape=[None, X_dim])

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 1530, in placeholder
    return gen_array_ops._placeholder(dtype=dtype, shape=shape, name=name)

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1954, in _placeholder
    name=name)

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 767, in apply_op
    op_def=op_def)

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2458, in create_op
    self._check_not_finalized()

  File "/Users/franklan123/anaconda/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2181, in _check_not_finalized
    raise RuntimeError("Graph is finalized and cannot be modified.")

RuntimeError: Graph is finalized and cannot be modified.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-16 12:31:41

没有没完没了的循环,tf.train.batch创建队列,您必须运行队列运行程序才能获取任何数据。否则,在执行sess.run时,您的代码只挂起queue.dequeue()操作(因为没有实际将数据放入队列的线程)。

简单解决方案:

  1. 在创建X_mb会话之前移动行(这修改了一个图形!)
  2. 将tf.Session更改为tf.train.MonitoredSession (这将为您运行队列,否则您将不得不手动运行它们+ MonitoredSession最终确定图形,这样您将避免将来出现类似于上面的错误)。完成此操作后-使用全局初始化器删除行(MonitoredSession也为您初始化)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46253823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档