【问题标题】:Tensorflow Estimator: training with weighted examplesTensorflow Estimator:使用加权示例进行训练
【发布时间】:2019-01-30 01:32:45
【问题描述】:

我正在用 Tensorflow Estimator 训练一个模型,我的数据不平衡。我想通过加权每个训练示例来纠正这一点。

在原始的 Tensorflow 中,人们可能会这样做 like this。在Estimator 中是否有一种简单的方法可以做到这一点?也许构建一个自定义input_fn

【问题讨论】:

标签: machine-learning tensorflow deep-learning


【解决方案1】:

我假设您正在进行分类。如果是这样,请使用tf.estimator.DNNClassifier

weight_column:一个字符串或_NumericColumn 创建者 tf.feature_column.numeric_column 定义特征列表示 权重。它用于在训练期间减轻重量或增加示例。 它将乘以示例的损失。如果是字符串, 它用作从features 获取权重张量的键。如果是 一个_NumericColumn,原始张量通过键weight_column.key获取,然后 在其上应用weight_column.normalizer_fn 以获得权​​重张量。

【讨论】:

    【解决方案2】:

    如果您正在构建自定义估计器模型,则应将数据集的每个样本的类权重作为特征转发给您的 model_fn,并且在定义损失函数 op 时,您可以将类权重传递给 weight 参数.

    示例:

     tf.losses.softmax_cross_entropy(target, logits,weights=features['weight'])
    

    【讨论】:

    • 遗憾的是 weights 参数不再可用。但是,交叉熵的数学意味着您可以通过将目标值从 1.0 更改为较低的数字来降低示例的权重,或者更改为较高的数字来提升它的权重,从而获得相同的效果。
    • 如果您使用的是 Keras 和 tf.Dataset API,如果您的 input_fn 输出一个 3 值元组,则可以指定样本权重 -> (Input,Target,Weight)
    • 您好,您有 tf2 在 model_fn 中实现自定义权重的代码示例吗?
    猜你喜欢
    • 2018-02-02
    • 2019-08-12
    • 1970-01-01
    • 2019-01-20
    • 2018-01-03
    • 2020-01-12
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多