【问题标题】:Why do the outputs sum to 1 in the TensorFlow Get started with Eager tutorial?为什么 TensorFlow Get started with Eager 教程中的输出总和为 1?
【发布时间】:2018-11-27 07:15:39
【问题描述】:

我做了这个教程:https://www.tensorflow.org/get_started/eager

这很有帮助,但我不明白为什么输出总和为 1。它说“对于这个例子,输出预测的总和是 1.0”,但没有解释。我认为这可能是激活函数的一个特性,但我读到 ReLu 可以取任何值 >0 (https://medium.com/the-theory-of-everything/understanding-activation-functions-in-neural-networks-9491262884e0)。

我想了解,因为我想了解在哪些情况下应该对输出变量进行归一化,在哪些情况下这是不必要的(我假设如果它们总和为 1,则没有必要)。

【问题讨论】:

  • 为什么投反对票?
  • 巨魔感染 stackoverflow,具有投票权的巨魔。为了帮助你,我给了你一个upvote。这是一个很好的问题,如果你还不知道答案的话。

标签: python-3.x tensorflow neural-network deep-learning softmax


【解决方案1】:

在给定的示例中,句子outputs always sum to 1 指的是使用的softmax 函数,与标准化或您使用的激活函数无关。在教程的 Iris 示例中,我们想要区分三个类别,当然类别概率之和不能超过 100% (1.0)。

例如,位于网络末端的 softmax 函数可以返回 [0.8, 0.1, 0.1]。这意味着第一类的概率最高。注意:所有单个概率结果的总和为 1.0。

【讨论】:

  • 啊,看起来教程中的示例代码实际上并没有给出 3 个类的概率(如图 2 所示),而只是根据原始激活值预测类?或者至少,我在网络末端找不到softmax函数..
  • 你是绝对正确的。这在教程中有点误导。
  • 感谢您的澄清!如果我想从网络中获取这些概率,我应该怎么做?
  • 不客气。如果您想拥有类 probas,您只需将原始激活值传递给 tf.nn.softmax 函数。顺便说一句,我将不胜感激,并将我的答案标记为已接受:) 谢谢
猜你喜欢
  • 1970-01-01
  • 2017-06-12
  • 2020-06-26
  • 1970-01-01
  • 2017-12-06
  • 2017-06-10
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多