【问题标题】:Neural network output layer activation神经网络输出层激活
【发布时间】:2019-08-02 00:48:15
【问题描述】:

我熟悉 Keras,在 Keras 中,我们需要根据要求在输出层中添加激活函数,但是在学习 Tensorflow 时,我发现没有向输出层添加激活函数。

谁能解释一下这背后的原因。

【问题讨论】:

    标签: deep-learning


    【解决方案1】:

    Keras 中的输出层也不需要激活函数。

    对于分类任务,我们通常倾向于在输出中添加一个激活函数(“sigmoid”用于二进制,“softmax”用于多类等)。

    然而,在大多数情况下,人们不会在输出层为回归神经网络任务添加激活函数(示例如下),因为我们最终需要真正的连续输出值。

    model.add(Dense(1))
    

    【讨论】:

      【解决方案2】:

      在 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 作为输入的函数。

      【讨论】:

        猜你喜欢
        • 2020-03-19
        • 2012-12-14
        • 2018-03-22
        • 2014-01-18
        • 2017-12-08
        • 2023-04-03
        • 2013-08-20
        • 2021-04-27
        相关资源
        最近更新 更多