【发布时间】:2019-08-02 00:48:15
【问题描述】:
我熟悉 Keras,在 Keras 中,我们需要根据要求在输出层中添加激活函数,但是在学习 Tensorflow 时,我发现没有向输出层添加激活函数。
谁能解释一下这背后的原因。
【问题讨论】:
标签: deep-learning
我熟悉 Keras,在 Keras 中,我们需要根据要求在输出层中添加激活函数,但是在学习 Tensorflow 时,我发现没有向输出层添加激活函数。
谁能解释一下这背后的原因。
【问题讨论】:
标签: deep-learning
Keras 中的输出层也不需要激活函数。
对于分类任务,我们通常倾向于在输出中添加一个激活函数(“sigmoid”用于二进制,“softmax”用于多类等)。
然而,在大多数情况下,人们不会在输出层为回归神经网络任务添加激活函数(示例如下),因为我们最终需要真正的连续输出值。
model.add(Dense(1))
【讨论】:
在 Tensorflow 中,损失函数通常需要 logits 作为输入,例如 sigmoid_cross_entropy_with_logits 或 softmax_cross_entropy_with_logits。 Logits 是激活函数之前的输出。
然而,在 Keras 中,默认情况下,您需要传递输出(带有激活)来计算您的损失,如您可以看到 here 的 categorical_cross_entropy,如果您传递给损失的不是 logit (有一个激活函数)(这是默认值)它直接根据输出计算交叉熵,但如果它来自 logits,则必须指定from_logits=True,它将使用相应的 TF 损失期望 logits 作为输入的函数。
【讨论】: