【问题标题】:how to give a non-zero value a larger weight with loss function in a regression task?如何在回归任务中为非零值赋予更大的权重和损失函数?
【发布时间】:2019-06-17 17:27:21
【问题描述】:

我有一个回归任务:y = f(x),
y 中的大多数值为零,因此,如果使用均方误差 (mse) 作为损失函数,模型会将所有预测的 y 值作为非常小的值;
所以,我想给 y 中的非零值赋予更大的权重;
我该怎么办?
我想尝试的一种解决方案是定义一个新的损失函数:

损失 = e * mse(y, y_pred)[y!=0] + (1-e) * mse(y, y_pred)[y==0]

e是权重参数,能用吗?如何在tensorflow中实现?

【问题讨论】:

    标签: python tensorflow statistics


    【解决方案1】:

    如果您想要 y 张量中的值更大,您可以将 y 张量与标量变量相乘

    y=tf.math.multiply(y,10)
    

    在某些情况下,使用 mse 训练的模型可以预测非常平滑的输出,如果您想要更清晰的输出,您可以使用 mean_pairwise_squared_error

    loss=tf.losses.mean_pairwise_squared_error(y_pred,y,weights=e)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 2015-09-29
      • 2019-10-23
      • 2020-05-24
      • 2018-03-03
      相关资源
      最近更新 更多