keras 在搭建神经网络时,提供了非常多便捷的函数,这里介绍一下如何自定义神经网络损失函数的方法。
我们可以通过编写一个返回标量并接受两个参数(即真值和预测值)的函数,在 Keras 中创建一个自定义损失函数。然后,我们将自定义损失函数传递给 model.compile 作为参数,就像处理任何其他损失函数一样。例如:
def my_loss(y_true, y_pred):
# y_true: true labels. tensorflow/theano tensor
# y_pred: predictions. tensorflow/theano tensor of the same shape as y_true
...
...
...
return scalar #返回一个标量值
然后在model.compile中指定:
model.compile(optimizer='sgd',loss=[my_loss],metrics=[...])
需要注意的坑:
- Keras损失函数只能将(y_true,y_pred)作为参数
- 在加载通过自定义损失函数训练的模型时,一定要记得调整加载模型代码,否则会报错。
- 损失函数一定是一个函数,不是一个计算表达式,用函数名包围起来再return。
原文链接:https://blog.csdn.net/miemieyang999/article/details/113498594