我对代码的逻辑是这样的:
dataset = slim.dataset.Dataset(...)
provider = slim.dataset_data_provider.DatasetDataProvider(dataset)
samples = tf.train.batch(provider.get(), batch_size=32, dynamic_pad=True, ...)
with tf.Session() as sess:
with slim.queues.QueueRunners(sess):
result = sess.run(samples)
print(result)
它有时效果很好,但有时打印信息
2017-09-24 20:42:34.519003: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu
\PY\35\tensorflow\core\framework\op_kernel.cc:1192] Cancelled: FIFOQueue '_3_bat
ch/padding_fifo_queue' is closed.
[[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[
DT_UINT8, DT_FLOAT, DT_INT64], timeout_ms=-1, _device="/job:localhost/replica:0/
task:0/cpu:0"](batch/padding_fifo_queue, case/If_1/Merge/_119, trans pose/_121, S
parseToDense_2)]]
2017-09-24 20:42:34.526003: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu
\PY\35\tensorflow\core\framework\op_kernel.cc:1192] Cancelled: FIFOQueue '_3_bat
ch/padding_fifo_queue' is closed.
[[Node: batch/padding_fifo_queue_enqueue = QueueEnqueueV2[Tcomponents=[
DT_UINT8, DT_FLOAT, DT_INT64], timeout_ms=-1, _device="/job:localhost/replica:0/
task:0/cpu:0"](batch/padding_fifo_queue, case/If_1/Merge/_119, transpose/_121, S
parseToDense_2)]]
我已经检查provider.get()
可以正常工作了,我认为我已经按照常规方式读取数据了,为什么我会得到这些信息呢?
顺便说一下,来自tensor
的{{1}}形状未知,所以我使用provider.get()
,换句话说,dynamic_pad=True
会创建tf.train.batch
}。
我也有测试,效果很好。
padding_fifo_queue
所以我很困惑,有什么不对?