我在这里浏览tensorflow API文档.在tensorflow文档中,他们使用了一个名为的关键字logits
.它是什么?在API文档的很多方法中,它都是这样编写的
tf.nn.softmax(logits, name=None)
Run Code Online (Sandbox Code Playgroud)
如果写的是什么是那些logits
只Tensors
,为什么保持一个不同的名称,如logits
?
另一件事是我有两种方法无法区分.他们是
tf.nn.softmax(logits, name=None)
tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别?这些文档对我来说并不清楚.我知道是什么tf.nn.softmax
呢.但不是另一个.一个例子将非常有用.
我的一些实验室伙伴一直在研究交叉熵强化学习。从我可以从他们那里收集的所有信息以及快速的互联网搜索中,交叉熵方法似乎与遗传算法几乎相同。有人可以向我解释一下,如果一种技术确实存在,这两种技术之间的真正区别是什么?
我看到很多关于 CEL 或二元交叉熵损失的解释,其中基本事实是 0 或 1,然后你会得到一个如下函数:
def CrossEntropy(yHat, y):
if yHat == 1:
return -log(y)
else:
return -log(1 - y)
Run Code Online (Sandbox Code Playgroud)
然而,当你的 yHat 不是离散的 0 或 1 时,我对 BCE 如何工作感到困惑。例如,如果我想查看 MNIST 数字的重建损失,其中我的基本事实是 0 < yHat < 1,并且我的预测是也在同一范围内,这如何改变我的功能?
编辑:
抱歉,让我为我的困惑提供更多背景信息。在关于 VAE 的 PyTorch 教程中,他们使用 BCE 来计算重建损失,其中 yhat (据我所知,不是离散的)。看:
https://github.com/pytorch/examples/blob/master/vae/main.py
该实现有效......但我不明白在这种情况下如何计算 BCE 损失。