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。