我一直在努力解交tf.data.Dataset,例如:
{a b c d e f}
到
{ (a,b) (c,d) (e,f) }
最终,这些代表从连续记录流中获取的图像标签对。
我当前使用的代码如下
def _input_fn():
def parseRecord(record):
return tf.convert_to_tensor(record[0], dtype=tf.string), tf.convert_to_tensor(record[1], dtype=tf.string)
ds = PipeModeDataset(channel, pipe_dir=directory, state_dir=directory, config_dir=directory, benchmark=True)
ds = ds.batch(2)
ds= ds.map(parseRecord)
ds = ds.batch(5)
return ds
with tf.Session() as sess:
it = _input_fn().make_one_shot_iterator()
next = it.get_next()
mini_batch = sess.run(next)
image, label = mini_batch
#Validated image is 5 images, label is 5 corresponding labels
但是,任何时候我都尝试在处理管道的其他部分进行任何并行调用(使用map或map和batch),包括在初始ds.batch(2)调用之后更大的批处理大小。我收到如下错误:
Index out of range using input dim 0; input has only 0 dims
。
for 'strided_slice' (op: 'StridedSlice') with input shapes: [], [1], [1], [1] and with computed input tensors: input[3] = <1>.
。
Multipart records are not supported
任何有关如何使用批处理,地图,窗口,交错或其他方式使该模式持续运行的最佳实践都将受到高度赞赏。