无法使用tf.train.batch()创建正确的批次

时间:2016-08-29 21:01:49

标签: python neural-network tensorflow

我有一堆长度为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()张贴失败,因为它们的长度不同。尝试了一些但没有成功。

0 个答案:

没有答案