在tensorflow API文档中,他们使用了一个叫做logits的关键字。是什么?很多方法都是这样写的:
tf.nn.softmax(logits, name=None)
如果logits只是一个通用的张量输入,为什么它被命名为logits?
其次,以下两种方法有什么区别?
tf.nn.softmax(logits, name=None)
tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)
我知道tf.nn.softmax做什么,但不知道其他的。举个例子会很有帮助。
学期的数学动机
当我们希望在0和1之间约束输出时,但我们的模型体系结构输出的是不受约束的值,我们可以添加一个规范化层来实现这一点。
一个常见的选择是sigmoid函数在二元分类中,这通常是逻辑函数,而在多类任务中,这是多项逻辑函数(又称为softmax)
如果我们想将新最终层的输出解释为“概率”,那么(隐含地)我们的sigmoid的无约束输入必须是逆sigmoid(概率)。在逻辑情况下,这相当于概率的对数概率(即概率的对数),也就是logit:
这就是为什么softmax的参数在Tensorflow中被称为logit——因为在假设softmax是模型中的最后一层,输出p被解释为概率的情况下,这一层的输入x可以解释为logit:
普遍的术语
在机器学习中,有一种倾向于概括从数学/统计/计算机科学中借来的术语,因此在Tensorflow中logit(类比)被用作许多归一化函数输入的同义词。
虽然它有很好的性质,如易于微导,以及前面提到的概率解释,但它有点随意。
Softmax可能更准确地称为softargmax,因为它是argmax函数的平滑近似。
学期的数学动机
当我们希望在0和1之间约束输出时,但我们的模型体系结构输出的是不受约束的值,我们可以添加一个规范化层来实现这一点。
一个常见的选择是sigmoid函数在二元分类中,这通常是逻辑函数,而在多类任务中,这是多项逻辑函数(又称为softmax)
如果我们想将新最终层的输出解释为“概率”,那么(隐含地)我们的sigmoid的无约束输入必须是逆sigmoid(概率)。在逻辑情况下,这相当于概率的对数概率(即概率的对数),也就是logit:
这就是为什么softmax的参数在Tensorflow中被称为logit——因为在假设softmax是模型中的最后一层,输出p被解释为概率的情况下,这一层的输入x可以解释为logit:
普遍的术语
在机器学习中,有一种倾向于概括从数学/统计/计算机科学中借来的术语,因此在Tensorflow中logit(类比)被用作许多归一化函数输入的同义词。
虽然它有很好的性质,如易于微导,以及前面提到的概率解释,但它有点随意。
Softmax可能更准确地称为softargmax,因为它是argmax函数的平滑近似。
Tensorflow 2.0兼容答案:dga和stackoverflowuser2010的解释非常详细地介绍了Logits和相关的函数。
当在Tensorflow 1中使用这些函数时。X可以正常工作,但是如果您从1迁移代码。X(1.14, 1.15,等等)到2。X(2.0, 2.1,等等),使用这些函数会导致错误。
因此,如果我们从1迁移,则为上面讨论的所有函数指定2.0兼容调用。X到2。X,为了社区的利益。
1.x中的函数:
tf.nn.softmax
tf.nn.softmax_cross_entropy_with_logits
tf.nn.sparse_softmax_cross_entropy_with_logits
从1迁移时各自的函数。X到2.x:
tf.compat.v2.nn.softmax
tf.compat.v2.nn.softmax_cross_entropy_with_logits
tf.compat.v2.nn.sparse_softmax_cross_entropy_with_logits
有关从1迁移的更多信息。X到2。x,请参考本迁移指南。