tensorflow中同时两个损失函数_tensorflow2.0常用损失函数小结

这些天损失函数有点困扰我,现结合tensorflow2.0官方文档,做以下小结,如果有其它想要补充的,后面再随时更新。

1、tf.keras.losses.sparse_categorical_crossentropy /            tf.keras.losses.SparseCategoricalCrossentropy

tf.keras.losses.SparseCategoricalCrossentropy(

from_logits=False, reduction=losses_utils.ReductionV2.AUTO,

name='sparse_categorical_crossentropy'

)

这个交叉熵损失函数适用于两个或更多类标签中(也就是(多)分类问题),它要求类标签是整型数(Integer),如果类标签使用的是one-hot表示,那么应该使用CategoricalCrossentropy损失。(参考下面具体介绍),它要求y_pred(预测值)的每个特征应该有#classes(类别数)个浮点值,y_true(真实值)的每个特征有一个浮点值。

下面是官方文档给出的例子:

在下面的代码段中,对于y_true的每个样本有一个浮点值,对于y_pred的每个样本有#classes(类别数)个浮点值,则y_true的shape为:[batch_size], y_pred 的 shape 是: [batch_size, num_classes]

cce = tf.keras.losses.SparseCategoricalCrossentropy()

loss = cce(

[0, 1, 2],

[[.9, .05, .05], [.5, .89, .6], [.05, .01, .94]])

print('Loss: ', loss.numpy()) # Loss: 0.3239

Usage with the compile API:

model = tf.keras.Model(inputs, outputs)

model.compile('sgd', loss=tf.keras.losses.SparseCategoricalCrossentropy())

2、tf.keras.losses.CategoricalCrossentropy /

tf.keras.losses.categorical_crossentropy

tf.keras.losses.CategoricalCrossentropy(

from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO,

name='categorical_crossentropy'

)

这个交叉熵损失函数适用于两个或更多类标签中(也就是(多)分类问题),它要求类标签使用one-hot表示,如果类标签是整数,那么应该使用SparseCategoricalCrossentropy损失。(参考上面具体介绍),它要求y_true(真实值)的每个特征有#classes(类别数)个浮点值。

在下面的代码段中,每个样本有#classes(类别数)个浮点值,y_true和y_pred 的 shape 是: [batch_size, num_classes]

cce = tf.keras.losses.CategoricalCrossentropy()

loss = cce(

[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]],

[[.9, .05, .05], [.05, .89, .06], [.05, .01, .94]])

print('Loss: ', loss.numpy()) # Loss: 0.0945

Usage with the compile API:

model = tf.keras.Model(inputs, outputs)

model.compile('sgd', loss=tf.keras.losses.CategoricalCrossentropy())

3、tf.keras.losses.MSE / tf.keras.losses.MeanSquaredError

MSE损失函数是计算labels(真实值)与预测值(predictions)之间误差平方的平均值。

loss = square(y_true - y_pred)

tf.keras.losses.MeanSquaredError(

reduction=losses_utils.ReductionV2.AUTO, name='mean_squared_error'

)

使用示例:

mse = tf.keras.losses.MeanSquaredError()

loss = mse([0., 0., 1., 1.], [1., 1., 1., 0.])

print('Loss: ', loss.numpy()) # Loss: 0.75

Usage with the compile API:

model = tf.keras.Model(inputs, outputs)

model.compile('sgd', loss=tf.keras.losses.MeanSquaredError())

4、tf.keras.losses.MeanAbsoluteError/ tf.keras.losses.MAE

计算标签和预测之间的绝对差的平均值。

loss = abs(y_true - y_pred)

tf.keras.losses.MeanAbsoluteError(

reduction=losses_utils.ReductionV2.AUTO, name='mean_absolute_error'

)

使用示例:

mae = tf.keras.losses.MeanAbsoluteError()

loss = mae([0., 0., 1., 1.], [1., 1., 1., 0.])

print('Loss: ', loss.numpy()) # Loss: 0.75

Usage with the compile API:

model = tf.keras.Model(inputs, outputs)

model.compile('sgd', loss=tf.keras.losses.MeanAbsoluteError())

原文链接:https://blog.csdn.net/qq_41660119/article/details/105813079

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值