tensorflow中的交叉熵之:tf.nn.sparse_softmax_cross_entropy_with_logits

tf.nn.sparse_softmax_cross_entropy_with_logits

官方链接

函数原型:

tf.nn.sparse_softmax_cross_entropy_with_logits(
    _sentinel=None,
    labels=None,
    logits=None,
    name=None
)

参数说明:

  • labels:一个长度为batch_size的一维张量,真实的标签索引,每一个元素对应logits中的一行。
  • logits:形状为[batch_size,num_classes]的张量,神经网络的输出。
  • 作用:计算神经网络的输出于真实标签的交叉熵。

计算过程:

  • 第一步:对logits的每一行进行归一化(或概率化)的softmax操作,计算公式如下:X为logits的某一行。
    X = [ x 1 , x 2 , . . . , x n ] X=[x_1,x_2,...,x_n] X=[x1,x2,...,xn] S = s o f t m a x ( X ) S=softmax(X) S=softmax(X) S = [ s 1 , s 2 , . . . , s n ] S=[s_1,s_2,...,s_n] S=[s1,s2,...,sn] s i = e x i ∑ j n e x j s_i=\frac{e^{x_i}}{\sum_{j}^n e^{x_j}} si=jnexjexi

  • 第二步:计算第一步正则化后的logits于label的交叉熵:由于label格式为一维的向量,所以首先需要将其转化为one-hot格式的编码格式。再计算交叉熵(公式如下): y ∗ y^* y为logits中的一行, y y y为label中某个元素的one-host编码。
    y ∗ = [ y 1 ∗ , y 2 ∗ , . . . , y n ∗ ] y^*=[y^*_1,y^*_2,...,y^*_n] y=[y1,y2,...,yn] y = [ y 1 , y 2 , . . . , y n ] y=[y_1,y_2,...,y_n] y=[y1,y2,...,yn] H y ∗ ( y ) = − ∑ i y i ∗ l o g ( y i ) H_{y^*}(y)=-\sum_i {y^*_ilog(y_i)} Hy(y)=iyilog(yi)

  • 交叉熵:实际上,交叉熵是衡量两个概率分布p,q之间的相似性,两个分布越相似(即越精确)交叉熵就会越小。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值