首页 文章

sparse_softmax_cross_entropy_with_logits和softmax_cross_entropy_with_logits有什么区别?

提问于
浏览
81

我最近遇到了tf.nn.sparse_softmax_cross_entropy_with_logits,我无法弄清楚与tf.nn.softmax_cross_entropy_with_logits的区别 .

使用 sparse_softmax_cross_entropy_with_logits 时,训练向量 y 的唯一区别是one-hot encoded

阅读API,与 softmax_cross_entropy_with_logits 相比,我找不到任何其他差异 . 但为什么我们需要额外的功能呢?

softmax_cross_entropy_with_logits 不应该产生与 sparse_softmax_cross_entropy_with_logits 相同的结果,如果它提供了一个热编码的训练数据/向量?

3 回答

  • 14

    具有两个不同的功能是 convenience ,因为它们产生相同的结果 .

    区别很简单:

    • 对于 sparse_softmax_cross_entropy_with_logits ,标签必须具有[batch_size]形状和dtype int32或int64 . 每个标签都是 [0, num_classes-1] 范围内的int .

    • 对于 softmax_cross_entropy_with_logits ,标签必须具有[batch_size,num_classes]和dtype float32或float64的形状 .

    softmax_cross_entropy_with_logits 中使用的标签是 sparse_softmax_cross_entropy_with_logits 中使用的 one hot version 标签 .

    另一个微小的区别是,使用 sparse_softmax_cross_entropy_with_logits ,你可以给-1作为标签,在这个标签上有损失 0 .

  • 22

    我想在TF文档中添加2个接受答案的内容 .

    第一:

    tf.nn.softmax_cross_entropy_with_logits注意:虽然这些类是互斥的,但它们的概率不一定是 . 所需要的只是每行标签都是有效的概率分布 . 如果不是,则梯度的计算将是不正确的 .

    第二:

    tf.nn.sparse_softmax_cross_entropy_with_logits注意:对于此操作,给定标签的概率被视为独占 . 也就是说,不允许使用软类,并且标签向量必须为每行logits(每个小批量条目)的真实类提供单个特定索引 .

  • 139

    两个函数都计算相同的结果,sparse_softmax_cross_entropy_with_logits直接在稀疏标签上计算交叉熵,而不是用one-hot encoding转换它们 .

    您可以通过运行以下程序来验证这一点:

    import tensorflow as tf
    from random import randint
    
    dims = 8
    pos  = randint(0, dims - 1)
    
    logits = tf.random_uniform([dims], maxval=3, dtype=tf.float32)
    labels = tf.one_hot(pos, dims)
    
    res1 = tf.nn.softmax_cross_entropy_with_logits(       logits=logits, labels=labels)
    res2 = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=tf.constant(pos))
    
    with tf.Session() as sess:
        a, b = sess.run([res1, res2])
        print a, b
        print a == b
    

    在这里,我创建一个长度为 dims 的随机 logits 向量,并生成单热编码标签(其中 pos 中的元素为1,其他为0) .

    之后我计算softmax和稀疏softmax并比较它们的输出 . 尝试重新运行几次以确保它始终产生相同的输出

相关问题