tensorflow代码学习:sigmoid_cross_entropy_with_logits

1. tf.nn.sigmoid_cross_entropy_with_logits

在这里插入图片描述
逻辑还是非常清晰的,

  1. 首先是labtel和logits,这两个的shape是相同的,然后将logits的每一个元素通过 σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1变换。注意,是每一个元素。
  2. 将正样本对应的位置拿出来,即 C i = 1 C_i=1 Ci=1,去匹配sigmoid之后的每个位置,计算正类的损失函数
    L p o s = − log  σ ( x ) L_{pos}=-\text{log}\ \sigma(x) Lpos=log σ(x)
  3. 然后将所有为0的位置拿出来,即 C i = 0 C_i=0 Ci=0,也就是负类,计算负类的损失函数
    L n e g = − log  ( 1 − σ ( x ) ) L_{neg}=-\text{log}\ (1- \sigma(x)) Lneg=log (1σ(x))
  4. 这个时候,因为我们是针对每一个元素计算的,所以最后得到的肯定还是一个矩阵,所以我们才需要使用tf.reduce_mean来对这个矩阵进行求均值
import numpy as np
import tensorflow as tf
 
def sigmoid(x):
    return 1.0/(1+np.exp(-x))
 
labels=np.array([[1.,0.,0.],[0.,1.,0.],[0.,0.,1.],[0.,1.,0.]])
logits=np.array([[1.,2.,3.],[4.,5.,6.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值