【问题标题】:Drop bad data from dataset Tensorflow从数据集 Tensorflow 中删除不良数据
【发布时间】:2021-04-07 12:43:52
【问题描述】:

我有一个使用 tf.data 的训练管道。在数据集中有一些坏元素,在我的例子中值为 0。如何根据它们的值删除这些坏数据元素?由于数据集很大,我希望能够在训练时在管道中删除它们。

从下面的伪代码假设:

def parse_function(element):
    height = element['height']
    if height <= 0: skip() #How to skip this value

    labels = element['label']
    features['height'] = height

    return features, labels

ds = tf.data.Dataset.from_tensor_slices(ds_files)
clean_ds = ds.map(parse_function)

建议是根据特征值使用 ds.skip(1),还是提供某种中性的重量/损失?

【问题讨论】:

    标签: python tensorflow tf.data.dataset


    【解决方案1】:

    你可以使用tf.data.Dataset.filter:

    def filter_func(elem):
        """ return True if the element is to be kept """
        return tf.math.greater(elem['height'],0)
    
    ds = tf.data.Dataset.from_tensor_slices(ds_files)
    clean_ds = ds.filter(filter_func)
    

    【讨论】:

      【解决方案2】:

      假设element 是您代码中的一个数据框,那么它将是:

      def parse_function(element):
          element = element.query('height>0')
      
          labels = element['label']
          features['height'] = element['height']
      
          return features, labels
      
      ds = tf.data.Dataset.from_tensor_slices(ds_files)
      clean_ds = ds.map(parse_function)
      

      `

      【讨论】:

        猜你喜欢
        • 2019-09-16
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 2015-08-23
        • 2015-01-20
        • 1970-01-01
        相关资源
        最近更新 更多