Tensorflow 交叉熵计算 sparse_softmax_cross_entropy_with_logits softmax_cross_entropy_with_logits

1、交叉熵计算公式

http://blog.csdn.net/rtygbwwwerr/article/details/50778098

摘自上面链接

p:真实样本分布,服从参数为p的0-1分布,即 XB(1,p)  
q:待估计的模型,服从参数为q的0-1分布,即 XB(1,q)  
两者的交叉熵为: 
CEH(p,q)  
=xp(x)logq(x)  
=[Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0)]  
=[plogq+(1p)log(1q)]  
=[yloghθ(x)+(1y)log(1hθ(x))]  
对所有训练样本取均值得: 
1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]  
这个结果与通过最大似然估计方法求出来的结果一致。

-- 总结来看,交叉熵,就是 - sum(这个类别的真实label*log(分类器预测属于这个类别的概率)), sum针对所有的类做

2、tf.softmax_cross_entropy_with_logits

传入参数, logits, labels

内部实现逻辑,首先对logits做softmax,然后对logits取log,最后 log的结果和labels对应相乘

代码示例

import tensorflow as tf

labels = [[0.2,0.3,0.5],
          [0.1,0.6,0.3]]
logits = [[2,0.5,1],
          [0.1,1,3]]
logits_scaled = tf.nn.softmax(logits)

result1 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
result2 = -tf.reduce_sum(labels*tf.log(logits_scaled),1)
result3 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits_scaled)

with tf.Session() as sess:
    print sess.run(result1)
    print sess.run(result2)
    print sess.run(result3)
>>>[ 1.41436887  1.66425455]
>>>[ 1.41436887  1.66425455]
>>>[ 1.17185783  1.17571414]

上述例子中,labels的每一行是一个概率分布,而logits未经缩放(每行加起来不为1),我们用定义法计算得到交叉熵result2,和套用tf.nn.softmax_cross_entropy_with_logits()得到相同的结果, 但是将缩放后的logits_scaled输tf.nn.softmax_cross_entropy_with_logits(), 却得到错误的结果,所以一定要注意,这个操作的输入logits是未经缩放的
例子摘自http://blog.csdn.net/john_xyz/article/details/61211422

3、sparse_softmax_cross_entropy_with_logits

输入:logits、labels

和softmax_cross_entropy_with_logits区别就一点,labels是稀疏表示的, 比如三分类问题,在softmax_cross_entropy_with_logits函数,如果是第二类,label是[0, 1, 0],如果在sparse_softmax)cross_entropy_with_logits, 输入的label就是[1],也就是第一维是1,其他都是0。











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值