【问题标题】:How to mask a loss function (mae) in Keras?如何在 Keras 中屏蔽损失函数(mae)?
【发布时间】:2021-11-21 16:27:37
【问题描述】:

我正在尝试为 Keras LSTM 实现一个自定义损失函数,它代表 mask_MAE。

def mask_MAE (y_true, y_pred, mask):# mask = 0 or 1
    mae = K.abs(y_pred - y_true) * mask
    return K.sum(mae)/K.sum(mask)    

【问题讨论】:

    标签: python-3.x tensorflow keras tensor loss-function


    【解决方案1】:

    自定义 keras 损失函数只能有两个参数 - y_truey_pred
    因此,您不能像在代码中那样使用 mask 参数。

    【讨论】:

    • 有没有其他方法可以给损失函数添加掩码?注意:掩码是模型的输入
    【解决方案2】:

    我找到了问题的答案。 我正在使用 LSTM,80 是 num_steps

    def GBVPP_loss(y_true, y_pred, cols = 80):
       u_out = y_true[:, cols: ]
       y = y_true[:, :cols ]
       w = 1 - u_out
       mae = w * tf.abs(y - y_pred)
       return tf.reduce_sum(mae, axis=-1) / tf.reduce_sum(w, axis=-1)
    ...
    history = model.fit(X_train, np.append(y_train, u_out_train, axis =1), 
                     validation_data=(X_valid, np.append(y_valid, u_out_valid, axis =1)), 
                     epochs=EPOCH, batch_size=BATCH_SIZE,
                     verbose=0,
                     callbacks=[lr])
    

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2018-10-10
      • 2019-08-31
      • 2018-04-03
      • 2019-01-20
      相关资源
      最近更新 更多