【TensorFlow】交叉熵损失函数

cross_entropy-----交叉熵是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。

1、tf.nn.sparse_softmax_cross_entropy_with_logits函数

tf.nn.sparse_softmax_cross_entropy_with_logits(
    _sentinel=None,
    labels=None,
    logits=None,
    name=None
)
# 计算logits和labels之间的稀疏softmax交叉熵。

测量离散分类任务中的概率误差,其中类是互斥的(每个条目仅在一个类中)。例如,每个CIFAR-10图像都标有一个且只有一个标签:图像可以是dog或truck,但不能同时是两者。

参数:

sentinel:用于防止位置参数。内部,不要使用。
labels:Tensor,shape为[d_0, d_1, …, d
{r-1}](其中r是labels的秩和结果)并且类型为int32或int64。每个labels中的条目必须是[0, num_classes)中的索引。当此操作在CPU上运行时,其他值将引发异常,并返回NaN,以获取GPU上相应的损失和梯度行。
logits:shape为[d_0, d_1, …, d_{r-1}, num_classes]和类型为float16,float32或 float64的未缩放日志概率。
name:操作的名称(可选)。
返回:

一个Tensor,与labels形状相同、与具有SoftMax交叉熵损失的logits具有相同的类型。

2、tf.nn.softmax_cross_entropy_with_logits函数

tf.nn.softmax_cross_entropy_with_logits(
    _sentinel=None,
    labels=None,
    logits=None,
    dim=-1,
    name=None
)
# 计算logits和labels之间的softmax交叉熵。

测量离散分类任务中的概率误差,其中类是互斥的(每个条目仅在一个类中)。例如,每个CIFAR-10图像都标有一个且只有一个标签:图像可以是dog或truck,但不能同时是两者。

参数:

_sentinel:用于防止positional参数。内部的,不要使用。
labels:沿着类维度的每个向量应该保持有效的概率分布,例如:对于标签shape为[batch_size, num_classes]的情况,labels[i]的每一行必须是有效的概率分布。
logits:未缩放的日志概率。
dim:类维度。默认为-1,这是最后一个维度。
name:操作的名称(可选)。
返回:

一个Tensor,包含softmax交叉熵损失的。它的类型与logits相同,它的shape与labels是相同的,除了它没有labels的最后一个维度。

两个函数虽然功能类似,但是其参数labels有明显区别。 tf.nn.softmax_cross_entropy_with_logits() 中的logits和labels的shape都是[b atch_size, num_classes], 而tf.nn.sparse_softmax_cross_entropy_with_logits() 中的labels 是 稀疏表示的,是 [0,num_classes)中的一个数值,代表正确分类结果。即 sparse_softmax_cross_entropy_with_logits 直接用标签计算交叉熵,而 softmax_cross_entropy_with_logits 是标签的onehot向量参与计算。softmax_cross_entropy_with_logits 的 labels 是 sparse_softmax_cross_entropy_with_logits 的 labels 的一个独热版本(one hot version)

3、tf.nn.sigmoid_cross_entropy_with_logits函数

tf.nn.sigmoid_cross_entropy_with_logits(
    _sentinel=None,
    labels=None,
    logits=None,
    name=None
)
# 计算给定logits的sigmoid交叉熵。

测量离散分类任务中的概率误差,其中每个类是独立的而不是互斥的。例如,可以执行多标签分类,其中图片可以同时包含大象和狗。

参数:

_sentinel:用于防止positional参数。内部的,不要使用。
labels:一个Tensor,与logits具有相同的类型和shape。
logits:一个Tensor,类型为float32或float64。
name:操作的名称(可选)。
返回:

与具有分量logistic损失的logits有着相同shape的Tensor。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值