【问题标题】:Neural network to output non-binary values?神经网络输出非二进制值?
【发布时间】:2011-02-11 00:08:54
【问题描述】:

我最近一直在研究人脸检测,很多文献都指出它们的输出有一个范围。这怎么可能?我创建了自己的网络,它似乎只输出 -1 或 1。这是因为我使用的是 Tanh 激活函数吗?我希望这些值从一个范围内的 0 到 1 输出,而不是二进制输出,所以我可以看到它认为输出实际上是一张脸有多“强”。谢谢。

【问题讨论】:

  • 你用的是什么神经网络?
  • Tanh 映射到 [-1,1] 包括介于两者之间的所有内容。提供有关您的实施的详细信息。也许你只需要为你想要的范围选择 .5*(1+tanh)。
  • 嗯,我正在使用位于 neurondotnet.freehostia.com/index.html 的 NeuronDotNet 库,我的隐藏层和输出层使用 Tanh,面部训练样本设置为 0.9,非面部训练样本设置为 -0.9。

标签: math neural-network face-detection


【解决方案1】:

是的...您的激活函数决定了您的值。如果您不在我们的输出神经元上放置激活函数,那么它只会输出值的总和......这种情况下会给您非均匀输出和非均匀期望值之间的实际误差。

当然,如果你标准化你的期望值,那么你可以保持你的激活函数。

【讨论】:

    【解决方案2】:

    好的,所以我认为发生的事情是 Tanh 函数过早地达到 1。我现在在输出层上更改为 Sigmoid 激活函数,我得到了更多不同的答案! :) 伟大的。谢谢。

    【讨论】:

      【解决方案3】:

      您的问题可能是 tanh 的输入范围。 请注意,sigmoid 的工作原理与 tanh 很相似——它很容易被一个大数字超载。 sigmoid(20) 几乎 = 1 和 sigmoid(-20) 为 0 尝试首先对输入层的输入进行归一化,使隐藏层和输出层中的数字更小。

      【讨论】:

      • 谢谢,我发帖时没有看到你的答案。我不知道这就是为什么它不起作用,所以也为此欢呼。
      • 抱歉,出于兴趣,输入应该标准化到什么样的水平?我使用的是-0.5到0.5。显然 Tanh 没问题,但 Sigmoid 不喜欢。
      猜你喜欢
      • 2014-07-05
      • 1970-01-01
      • 2015-02-23
      • 2016-02-24
      • 2020-05-01
      • 2010-10-13
      • 2017-11-21
      • 2012-01-16
      相关资源
      最近更新 更多