在Tensorflow中处理缺失值

zour9fqk  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(228)

我需要一些关于张流/深度学习中的插补方法的指导。我熟悉scikit-learn如何处理插补,当我将其Map到张流生态系统时,我希望使用keras中的预处理层或张流变换中的函数来进行插补。然而,至少据我所知,这些函数并不存在。所以我有几个问题:
1.是否有与深度学习工作方式相关的原因导致这些函数不存在(例如,密集采样需要尽可能准确,而你有大量数据,因此永远不需要插补)
1.如果它不是#1,那么在张流中应该如何处理插补呢?例如,在服务过程中,您的输入可能是缺失数据,对此您无能为力。我认为将其集成到preprocessing_fn中将是一件值得做的事情。
1.是否可以让图形在训练和服务过程中做不同的事情?例如,在无缺失值数据上训练,如果在服务过程中遇到这种情况,请执行一些操作,如忽略该值或将其设置为指定的默认值。
谢谢大家!

1l5u6lss

1l5u6lss1#

请参阅缺失数据的平均值插补,以使用平均值插补数据中的缺失值。
在下面的例子中,x是一个特征,表示为preprocessing_fn中的tf.SparseTensor,为了将其转换为稠密Tensor,我们计算其均值,并将均值设置为示例中缺失时的默认值。
回答您的第三个问题,TensorFlow变换会将变换构建到模型的TensorFlow图中,以便在训练和推理时执行相同的变换。对于您提到的用例,下面的插补示例将起作用,因为如果未指定default_value参数,则会设置索引的值。如果未设置default_value参数,则默认为零。
示例代码:

def preprocessing_fn(inputs):
  return {
      'x_out': tft.sparse_tensor_to_dense_with_shape(
          inputs['x'], default_value=tft.mean(x), shape=[None, 1])
  }

相关问题