首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置string_input_producer时Tensorflow num_epochs行为不当

设置string_input_producer时Tensorflow num_epochs行为不当
EN

Stack Overflow用户
提问于 2016-07-01 00:09:13
回答 2查看 627关注 0票数 0

在设置string_input_producer时,num_epochs似乎并不是队列字符串。

使用下面的代码,程序打印,这是不正确的。

代码语言:javascript
复制
`import tensorflow as tf
sess = tf.InteractiveSession()
filenames = ["1", "2", "3"]
filename_queue = tf.train.string_input_producer(filenames, num_epochs=10)
test_value = tf.convert_to_tensor(filename_queue.size())

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)

print(sess.run([test_value]))`

但如果我干掉num_epochs,

代码语言:javascript
复制
`import tensorflow as tf
sess = tf.InteractiveSession()
filenames = ["1", "2", "3"]
filename_queue = tf.train.string_input_producer(filenames)
test_value = tf.convert_to_tensor(filename_queue.size())

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)

print(sess.run([test_value]))`

它按预期打印3。

还有其他人遇到同样的问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-01 16:38:26

解决方案是添加以下一行:

代码语言:javascript
复制
sess.run(tf.initialize_all_variables())

...before启动队列运行程序。tf.train.string_input_producer()函数在内部创建一个TensorFlow变量来跟踪当前的时代索引,并且它必须在第一次使用之前被初始化(当您启动队列运行程序时)。

票数 0
EN

Stack Overflow用户

发布于 2017-01-19 21:05:51

现在,使用

sess.run(tf.local_variables_initializer())

在启动队列运行程序之前。因为如果生产者()不是None,则num_epochs将创建本地计数器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38135129

复制
相关文章

相似问题

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