zoukankan      html  css  js  c++  java
  • 【NLP】常用损失函数

    1.sigmoid_cross_entropy_with_logits

    tf.nn.sigmoid_cross_entropy_with_logits(logits=logits, labels=labels)
    • 计算方式:对输入的logits先通过sigmoid函数计算,再计算它们的交叉熵,但是它对交叉熵的计算方式进行了优化,使得的结果不至于溢出。
    • 适用:每个类别相互独立但互不排斥的情况:例如一幅图可以同时包含一条狗和一只大象。
    • output不是一个数,输出形状与logits相同,所以一般配合tf.reduce_mean(loss)使用

    例:label=[[1,1,0],[0,1,0],[0,0,1]   logits=[[0.6,0.7,0.2],[0.1,0.5,0.2],[0.2,0.1,0.8]]

    2. softmax_cross_entropy_with_logits

    tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)
    • labels:和logits具有相同type和shape的张量(tensor),,是一个有效的概率,sum(labels)=1, one_hot=True(向量中只有一个值为1.0,其他值为0.0)。
    • 计算方式:对输入的logits先通过softmax函数计算,再计算它们的交叉熵,但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。
    • 适用:每个类别相互独立且排斥的情况,一幅图只能属于一类,而不能同时包含一条狗和一只大象。
    • output:不是一个数,而是一个batch中每个样本的loss,所以一般配合tf.reduce_mean(loss)使用。

    例:

    y = np.array([[1,0,0],[0,1,0],[0,0,1],[1,0,0],[0,1,0]])# 每一行只有一个1
    logits =np.array([[12,3,2],[3,10,1],[1,2,5],[4,6.5,1.2],[3,6,1]])

    3. sparse_softmax_cross_entropy_with_logits

    tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel=None,labels=None,logits=None, name=None)
    • labels:shape为[batch_size],labels[i]是{0,1,2,……,num_classes-1}的一个索引, type为int32或int64
    • 计算方式:对输入的logits先通过softmax函数计算,再计算它们的交叉熵,但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。
    • 适用:每个类别相互独立且排斥的情况,一幅图只能属于一类,而不能同时包含一条狗和一只大象 。
    • output不是一个数,而是一个batch中每个样本的loss,所以一般配合tf.reduce_mean(loss)使用。
    • 计算公式:
    • tf.nn.softmax_cross_entropy_with_logits()的计算公式一样,只是要将labels转换成tf.nn.softmax_cross_entropy_with_logits()中labels的形式

    例:

    y = np.array([0,1,2,0,1])# 每一行只有一个1
    logits =np.array([[12,3,2],[3,10,1],[1,2,5],[4,6.5,1.2],[3,6,1]])

    4. weighted_cross_entropy_with_logits

    tf.nn.weighted_cross_entropy_with_logits(labels,logits, pos_weight, name=None) 

    计算具有权重的sigmoid交叉熵sigmoid_cross_entropy_with_logits()

  • 相关阅读:
    Git 基础笔记整理1
    学习开源中国客户端
    IOS项目中的细节处理,如更改状态栏等等
    网络编程
    当FileWriter没有flush的时候,不写入文件
    批量移动文件
    批量重命名文件
    替换一个文件内的某个字符
    遍历map和删除map中的一个entry
    ArrayList的遍历-转载
  • 原文地址:https://www.cnblogs.com/pobby/p/12928552.html
Copyright © 2011-2022 走看看