tensorflow2.x学习笔记九:tensorflow(keras)损失函数之平均绝对值、均方误差

一、MeanAbsoluteError类

tf.keras.losses.MeanAbsoluteError(
    reduction=losses_utils.ReductionV2.AUTO, 
    name='mean_absolute_error'
)

下面举几个例子

mae = tf.keras.losses.MeanAbsoluteError()
##左边的参数是y_true,右边是y_pred
loss = mae(([0., 0., 1., 1.],[0., 0., 1., 1.]) ,
           ([1., 1., 1., 0.],[1., 3., 1., 0.]))
print('Loss: ', loss.numpy()) 

输出:Loss:  1.0
mae = tf.keras.losses.MeanAbsoluteError( reduction=tf.keras.losses.Reduction.NONE)
loss = mae(([0., 0., 1., 1.],[0., 0., 1., 1.]) ,
          ([1., 1., 1., 0.],[1., 3., 1., 0.]))
print('Loss: ', loss.numpy()) 

输出:Loss:  [0.75 1.25]
mae = tf.keras.losses.MeanAbsoluteError( reduction=tf.keras.losses.Reduction.SUM)
loss = mae(([0., 0., 1., 1.],[0., 0., 1., 1.]) ,
           ([1., 1., 1., 0.],[1., 3., 1., 0.]))
print('Loss: ', loss.numpy()) 

输出:Loss:  2.0

可以看出默认是求平均,可以设置reduction参数来改变其计算结果的表示形式

二、MAE函数

loss=tf.keras.losses.MAE(([0., 0., 1., 1.],[0., 0., 1., 1.]) ,
                         ([1., 1., 1., 0.],[1., 3., 1., 0.]))
print('Loss: ', loss.numpy()) 

输出:Loss:  [0.75 1.25]

它们还可以作为model.compile()的loss参数,如下所示:

model = tf.keras.Model(inputs, outputs)
model.compile(
         'sgd', 
         loss=tf.keras.losses.MeanAbsoluteError())
model = tf.keras.Model(inputs, outputs)
model.compile(
         'sgd', 
         loss=tf.keras.losses.MAE)


均方误差和平均绝对值误差只是计算方法不同,其他都是一样的。对应的是MeanSquaredError类和MSE函数。

你可能感兴趣的:(tensorflow2.x学习笔记九:tensorflow(keras)损失函数之平均绝对值、均方误差)