如何在 Keras 中屏蔽损失函数(mae)?
Posted
技术标签:
【中文标题】如何在 Keras 中屏蔽损失函数(mae)?【英文标题】:How to mask a loss function (mae) in Keras? 【发布时间】: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)
【问题讨论】:
【参考方案1】:自定义 keras
损失函数只能有两个参数 - y_true
和 y_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])
【讨论】:
以上是关于如何在 Keras 中屏蔽损失函数(mae)?的主要内容,如果未能解决你的问题,请参考以下文章