我有一堆长度为5000的数据(尽管内部列表的长度不同)并且输入为numpy数组:
In [39]: data.train_x
Out[39]:
array([ [10, 2093, 121, 87451, 1, 10, 478, 4, 185, 4, 109, 239, 1527, 96, 16, -1, 116, 1, 33, 276, 56, 989, 12, 13, 1232, 2683, 12, 7166, 1],
[-1, -1, -1, 43, 15, 626, 53, 524, 14, -1, 733, 1, 10, 68, 33, 1],
[845, 14, -1, 32, 6455, 16, 29, 13987, 148, 4, 8995, 16, 1556, 1, 88, 610],
...,
[151, 68, 353, 32, 46, -1, -1, 4, 29, 1034, 4, 15, 171, 122, 434, -1],
[13182, 14732, 50100, 2917, 3526, 37, 48, 8617, 5057, 48, 2, 32029, 1477, 2, 5687, 5472, -1, 4, 127, 215, 425, 61376, -1],
[13, 607, -1, 2476, 35, 171, 39, 515, -1, 3307, 2, 7094, 615, 92, -1, 4457, 46, 16, 26034, 13, 685, 2365, 543, -1]], dtype=object)
然后我转换并创建了一个张量列表,每个张量代表原始数据的一个例子:
inputs = [tf.convert_to_tensor(input, dtype=tf.int16) for input in data.train_x]
现在我尝试使用tf.train.batch()和tf.train.batch_join()来生成批量数据:
batched_inputs = tf.train.batch(
tensors=inputs,
batch_size=50,
dynamic_pad=True,
# enqueue_many=True,
name='batching'
)
生成的批处理数据是错误的,它只是创建一个列表(长度与inputs
相同)张量,每个张量的形状为(50,长度为一个输入)我怀疑它只是该输入的50次复制..
In [42]: batched_inputs[0]
Out[42]: <tf.Tensor 'batching_7:0' shape=(50, 29) dtype=int16>
有人可以告诉我如何使用正确的长度创建正确的批量数据,并动态填充每个批次。
非常感谢!!
更新
阅读LINK之后,问题似乎是尝试tf.pack()
张贴失败,因为它们的长度不同。尝试了一些但没有成功。