【问题标题】:Batching and padding using the Tensorflow data API使用 Tensorflow 数据 API 进行批处理和填充
【发布时间】:2020-09-25 04:39:47
【问题描述】:

我无法理解 TensorFlow 数据 API (tensorflow.data.Dataset) 的工作原理。我的 输入是我要批处理的整数列表的列表,填充 并连接。例如,我的数据看起来像这样

data = [[1, 2, 3, 4, 5, 6, 7],
        [1, 2, 3, 4],
        [1]]

批量大小为 3 它应该变成:

[[[1, 2, 3], [4, 5, 6], [7, 0, 0]],
 [[1, 2, 3], [4, 0, 0]],
 [[1, 0, 0]]]

最后:

[[1, 2, 3], [4, 5, 6], [7, 0, 0],
 [1, 2, 3], [4, 0, 0], [1, 0, 0]]

【问题讨论】:

  • 你有什么问题?
  • @LukaszTracewski 如何使用tensorflow.data API 将数据从输入格式转换为输出格式。
  • 对不起,我第一次没有得到它。这是您获取数据的方式,例如列表吗?我在问,因为您可能必须在 TF 之外处理数据才能获得所需的形状(矩形数据)。
  • @LukaszTracewski 数据格式更复杂,但为了简化问题,我将其描述为列表。我希望tensorflow.data 中的工具应该足以将其转换为我想要的结构。
  • 你那里的东西可以转换成RaggedTensorpadded_batch不支持。海事组织你不走运。

标签: python tensorflow padding tensorflow-datasets batching


【解决方案1】:

这并不容易,但我终于成功了:

def batch_each(x):
    return Dataset.from_tensor_slices(x).batch(3)
data = [[1, 2, 3, 4, 5, 6, 7],
        [1, 2, 3, 4],
        [1]]
rt = tf.ragged.constant(data)
ds = Dataset \
    .from_tensor_slices(rt) \
    .flat_map(batch_each) \
    .padded_batch(1, padded_shapes = (3,)) \
    .unbatch()
for e in ds:
    print(e)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多