【问题标题】:Does customized loss function impact backpropagation in Keras?自定义损失函数会影响 Keras 中的反向传播吗?
【发布时间】:2018-10-08 02:46:12
【问题描述】:
我正在通过使用带有 tensorflow 后端的 Keras 来做一个项目。出于商业原因,我需要高度重视某种错误,所以我实现了一个自定义的损失函数。例如:
error = np.abs(y_true - predict)
if error > low_limit:
error = error * 10
我发现这个自定义的损失函数确实改变了训练过程中显示的误差值。我想知道的是,这个新的损失函数是否真的可以改变训练期间反向传播的行为?因为我没有看到与模型的重量有太大差异。
【问题讨论】:
标签:
keras
backpropagation
【解决方案1】:
简短的回答:是的,这个损失函数确实改变了 BP 的行为,但我很惊讶这个损失函数有效......
反正我觉得下面的损失函数更有意义
def my_mae( y_true, y_pred, low_bound=1e-3, coef=10. ) :
raw_mae = keras.losses.mae( y_true, y_pred )
mask = K.cast( raw_mae <= low_bound, dtype='float32' )
#new_mae = mask * raw_mae * coef + (1-mask) * raw_mae
new_mae = (1 + mask * (coef-1)) *raw_mae
return new_mae
当样本损失太低时会产生额外损失。