【问题标题】:tf.data.Dataset.padded_batch pad differently each featuretf.data.Dataset.padded_batch 以不同的方式填充每个功能
【发布时间】:2018-09-25 04:15:18
【问题描述】:

我有一个 tf.data.Dataset 实例,它拥有 3 个不同的功能

  • label 是一个标量
  • sequence_feature 是一个标量序列
  • seq_of_seqs_feature 是序列特征的序列

我正在尝试使用 tf.data.Dataset.padded_batch() 生成填充数据作为模型的输入 - 我想以不同的方式填充每个功能。

示例批次:

[{'label': 24,
  'sequence_feature': [1, 2],
  'seq_of_seqs_feature': [[11.1, 22.2],
                          [33.3, 44.4]]},
 {'label': 32,
  'sequence_feature': [3, 4, 5],
  'seq_of_seqs_feature': [[55.55, 66.66]]}]

预期输出:

[{'label': 24,
  'sequence_feature': [1, 2, 0],
  'seq_of_seqs_feature': [[11.1, 22.2],
                          [33.3, 44.4]]},
 {'label': 32,
  'sequence_feature': [3, 4, 5],
  'seq_of_seqs_feature': [[55.55, 66.66],
                           0.0, 0.0    ]}]

如您所见,label 特性不应被填充,sequence_featureseq_of_seqs_feature 应由给定批次中对应的最长条目填充。

【问题讨论】:

    标签: python tensorflow tensorflow-datasets


    【解决方案1】:

    tf.data.Dataset.padded_batch() 方法允许您为生成的批次的每个组件(功能)指定padded_shapes。例如,如果您的输入数据集名为ds

    padded_ds = ds.padded_batch(
        BATCH_SIZE,
        padded_shapes={
            'label': [],                          # Scalar elements, no padding.
            'sequence_feature': [None],           # Vector elements, padded to longest.
            'seq_of_seqs_feature': [None, None],  # Matrix elements, padded to longest
        })                                        # in each dimension.
    

    请注意,padded_shapes 参数与输入数据集的元素具有相同的结构,因此在这种情况下,它需要一个字典,其中的键与您的特征名称匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-17
      • 2017-03-14
      • 1970-01-01
      • 2018-02-12
      • 2011-01-26
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多