rik*_*mbo 6 tensorflow cross-entropy
好吧,所以我准备tf.nn.softmax_cross_entropy_with_logits()在Tensorflow中运行该功能.
我的理解是'logits'应该是一个概率张量,每一个都对应于一个像素的概率,它是图像的一部分,最终将成为"狗"或"卡车"或其他......有限的事情的数量.
据我了解,logits插入等式的右侧.也就是说,它们是每个x(图像)的q.如果它们的概率从0到1 ......那对我来说是有意义的.但是当我运行我的代码并最终得到一些logits时,我没有得到概率.相反,我得到了正面和负面的浮动:
-0.07264724 -0.15262917 0.06612295 ..., -0.03235611 0.08587133 0.01897052 0.04655019 -0.20552202 0.08725972 ..., -0.02107313 -0.00567073 0.03241089 0.06872301 -0.20756687 0.01094618 ..., etc
Run Code Online (Sandbox Code Playgroud)
所以我的问题是......是吗?我是否必须以某种方式计算所有的logits并将它们转换为从0到1的概率?
mrr*_*rry 16
要注意的关键的东西是tf.nn.softmax_cross_entropy_with_logits(logits, labels)执行上的每一行的内部SOFTMAX logits让他们都解释成概率,他们被送到交叉熵公式之前.
因此," logits"不一定是概率(或者甚至是真正的日志概率,正如名称所暗示的那样),因为在该操作中发生了内部规范化.
另一种写作方式:
xent = tf.nn.softmax_cross_entropy_with_logits(logits, labels)
Run Code Online (Sandbox Code Playgroud)
...将会:
softmax = tf.nn.softmax(logits)
xent = -tf.reduce_sum(labels * tf.log(softmax), 1)
Run Code Online (Sandbox Code Playgroud)
然而,这种替代方案将是(i)在数值上更不稳定(因为softmax可以计算更大的值)和(ii)效率更低(因为在backprop中会发生一些冗余计算).对于实际用途,我们建议您使用tf.nn.softmax_cross_entropy_with_logits().
| 归档时间: |
|
| 查看次数: |
11247 次 |
| 最近记录: |