Tensorflow 论点是什么;“容量”;对于in-tf.train.string\u input\u producer()

Tensorflow 论点是什么;“容量”;对于in-tf.train.string\u input\u producer(),tensorflow,Tensorflow,函数tf.train.string\u input\u producer(string\u tensor,num\u epochs=None,shuffle=True,seed=None,capacity=32,shared\u name=None,name=None)的参数对我来说相当模糊 在这里设置容量参数意味着什么,它与参数字符串张量的长度有关吗。 举个例子就好了。 非常感谢。容量是队列的大小,因此在您的示例中,默认情况下,队列运行器最多可以将32个字符串排入队列。容量是队列在任何给定时间

函数
tf.train.string\u input\u producer(string\u tensor,num\u epochs=None,shuffle=True,seed=None,capacity=32,shared\u name=None,name=None)的
参数对我来说相当模糊

在这里设置
容量
参数意味着什么,它与参数
字符串张量
的长度有关吗。 举个例子就好了。
非常感谢。

容量是队列的大小,因此在您的示例中,默认情况下,队列运行器最多可以将32个字符串排入队列。

容量是队列在任何给定时间可以容纳的最大元素数。您应该将该数字设置得足够高,以便您的模型不会因数据不足而饿死。但是,如果将其设置得太高,队列将消耗太多内存


最好的数字是特定于型号的,您可以通过反复试验找到它。从一个合理的小数字开始,检查您的队列多长时间是空的。增加缓冲区,直到看不到空队列。

32总是足够吗?或者我们应该使用队列来适应输入或图中节点的大小?它本质上是预取缓冲区的大小,因此如果数据IO高度不可预测,那么它应该更大。有一个从每个输入生成程序导出到TensorBoard的汇总统计数据,类似于“分数满”,它显示了0的频率。如果它通常为零,您希望添加我的队列运行程序,如果它有时为零,那么您的数据消耗/生产可能是不可预测的,缓冲区应该是不可预测的larger@YaroslavBulatov,你能详细说明一下“预取缓冲区”吗?此外,是否有关于容量的建议数字?最后,为确认容量与
字符串的长度无关,是否正确?正确,“容量”表示可存储在队列缓冲区中的张量数量。预取意味着获取数据与计算并行进行,在这种情况下,这是可能的,因为填充队列是从与计算不同的线程完成的。当队列为空时,它会立即抛出OutOfRange错误吗?