TensorFlow字符串输入生成器大小()
正在尝试对tf.train.string\u input\u producer r1.3创建的队列大小进行健全性检查,但在预期大小为3时,仅获取零大小 导入tensorflow作为tf file\u queue=tf.train.string\u input\u producer['file1.csv','file2.csv','file3.csv'] 打印'typefile_队列:{}'。格式化typefile_队列 将tf.Session作为SES: coord=tf.train.Coordinator threads=tf.train.start\u queue\u runnersoord=coord file\u queue\u size=sess.runfile\u queue.size 请求停止 坐标 打印“队列大小操作的结果:{}”。格式化文件\u队列\u大小 我的直觉是,有某种惰性的初始化正在进行,所以我想我应该向队列询问一个项目,然后看看它的大小 导入tensorflow作为tf file\u queue=tf.train.string\u input\u producer['file1.csv','file2.csv','file3.csv'] 打印'typefile_队列:{}'。格式化typefile_队列 将tf.Session作为SES: coord=tf.train.Coordinator threads=tf.train.start\u queue\u runnersoord=coord item=sess.runfile\u queue.dequeue file\u queue\u size=sess.runfile\u queue.size 请求停止 坐标 打印“队列大小操作的结果:{}”。格式化文件\u队列\u大小 虽然大小不再为零,但提供的大小不是两个,并且每次运行代码时都会更改TensorFlow字符串输入生成器大小(),tensorflow,Tensorflow,正在尝试对tf.train.string\u input\u producer r1.3创建的队列大小进行健全性检查,但在预期大小为3时,仅获取零大小 导入tensorflow作为tf file\u queue=tf.train.string\u input\u producer['file1.csv','file2.csv','file3.csv'] 打印'typefile_队列:{}'。格式化typefile_队列 将tf.Session作为SES: coord=tf.train.Coord
我觉得获取大小很简单,但可能这不是与数据流操作交互的方式。任何能解释这里发生的事情的见解都将不胜感激 这是异步性质的工件,队列由队列运行程序填充。请尝试以下代码:
import tensorflow as tf
import time
file_queue = tf.train.string_input_producer(['file1.csv','file2.csv','file3.csv'])
print('type(file_queue): {}'.format(type(file_queue)))
with tf.Session() as sess:
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
time.sleep(1)
file_queue_size = sess.run(file_queue.size())
coord.request_stop()
coord.join(threads)
print('result of queue size operation: {}'.format(file_queue_size))
输出应该是队列大小操作的结果:32。通过暂停主线程,队列运行程序可以运行足够长的时间来填满队列。
为什么是32而不是3?让我们看一下字符串\u输入\u生产者的签名:
这里需要注意两个主要事项:
num_epochs=None意味着永远在项目列表上迭代。要仅在列表上迭代一次,请设置num_epochs=1。您还需要调用sess.runtf.local\u variables\u初始值设定项。当num_epochs=1时,如果您在出列后运行size op,您将看到大小减小。
容量=32这是队列的默认容量。这就是为什么我们在上面的输出中看到的是32而不是3。
谢谢,这真的很有帮助,对TF文档来说是一个很好的补充。
string_input_producer(
string_tensor,
num_epochs=None,
shuffle=True,
seed=None,
capacity=32,
shared_name=None,
name=None,
cancel_op=None
)