[TensorFlow 2] [Keras] 自定义 loss 函数

前言

嘿,虽然Keras里面自带了很多loss函数,但是有时候面对定制化的需求,自带的函数还是不够用的,这个时候自定义的loss函数就派上了用场。本文先简要介绍一种自定义loss函数的方法,日后有时间再更新其他的(O(∩_∩)O)。

环境

  • TensorFlow 2.0 Beta

代码

话不多说,先上代码:

def custom_loss(y_true, y_pred):
	return tf.reduce_mean(tf.square(y_true-y_pred))

嘿,这不是我们的 MSE 嘛!当然,除了 MSE,你可以自定义任何类型的loss函数。函数写好后,就交给模型吧:

model.compile(loss=custom_loss)

那么,除了操纵y_truey_pred,我们还可不可以引入其他的数据来计算loss呢?Yes!

z = keras.layers.Dense(3197747)(inputs)

def custom_loss(y_true, y_pred):
	loss_1 = tf.reduce_mean(tf.sqrt(z))
	loss_2 = tf.reduce_mean(tf.square(y_true-y_pred))
	return loss_1 + loss_2

model.compile(loss=custom_loss)

嘿,这样就可以方便地算各种loss啦,例如KL散度等等。
除了使用Keras functional API来自定义loss函数,还有一些其他的方法,就先不介绍啦!

Reference

  1. Module: tf.keras.losses. (June 13, 2019). Retrieved from https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/losses
发布了40 篇原创文章 · 获赞 84 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/xovee/article/details/91887779