关于TF中交叉熵计算

转载自:https://blog.csdn.net/brooknew/article/details/84660830 

 

sigmoid_cross_entropy_with_logits 可以衡量已标注过数据预测的正确度。比如一个(x,y)数据项,x表示输入取值为实数,y表示标注取值0或1。根据x算出一个概率p=1/(1+e^(-x)) 。 可以看到,当x=0时p=0.5 ,标注为1或0的概率各50%;x>0 时,p>0.5, x越大p越接近于0;x < 0 时,p<0.5。所以 L=ylog(p)+ (1-y)log(1-p)可以衡量x和y对sigmoid的符合度,L越大表示越符合,可以看出L的第一项在y=1时贡献一个值,第二项在y=0时贡献一个值。sigmoid_cross_entropy_with_logits = - L ,因而就变成越小越符合。

import tensorflow as tf
import math
import numpy as np
 
a = [3., 2.0 , 1.0 , -2.0 , -2.0 , 1.0 , 20.0]
y = [1., 1,    1 ,    0  ,   1 ,   0  , 0 ]
na =  np.array( a  )
ta = tf.Variable( a )
pa = [ 1.0/(math.exp(-a1)+1.0) for a1 in a ]
print(pa)
 
ty = tf.Variable( y )
print('math.log(1-pa[6])' , math.log(1-pa[6]) )
yal =  [ -y1*math.log(pa1)-(1-y1)*math.log(1-pa1) for y1, pa1 in zip(y , pa)   ]
print( 'yal:' , yal )
L = tf.nn.sigmoid_cross_entropy_with_logits( logits= ta , labels = ty )
 
with tf.Session() as se :
    se.run( tf.global_variables_initializer())
    L0 = se.run( L  )
    print(L0)
 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值