【问题标题】:How to handle real numbers in a neural network?如何处理神经网络中的实数?
【发布时间】:2013-04-16 18:34:38
【问题描述】:

我一直在玩神经网络。我从近似 XOR 函数开始,没有太多问题。但是,然后我攻击了逼近 sqrt 函数的问题。

问题是输入和输出可以是任何实数,而不仅仅是]0,1[中的数字

有没有办法在神经网络中处理它,以便它可以直接输出实数?

或者我是否必须将输入和输出数据标准化为 ]0,1[ 范围?这不是精度损失吗?

谢谢

【问题讨论】:

    标签: neural-network


    【解决方案1】:

    您可以在输出层中选择另一个激活函数,例如g(a) = a (恒等式)。但是,您应该有一个带有非线性激活函数(tanh、logistic)的隐藏层来逼近非线性函数。

    【讨论】:

    • 我刚刚试过了。如果我使用 tanh 或 sigmoid 作为隐藏层的激活函数,然后在输出层使用恒等激活函数,我的权重会变成无穷大……这可能是我的反向传播算法的问题.
    • 对于这样一个简单的问题,这是我能想到的唯一原因。也许它有助于看到一个正确的实现,例如github.com/AlexanderFabisch/OpenANN/blob/master/src/…(功能:前向传播和反向传播;带有矩阵运算)
    【解决方案2】:

    最后,我发现最合理和通用的解决方案是对输入进行规范化,然后对输出进行非规范化。

    用户必须设置输入/输出范围,然后一切正常。

    这是大多数神经网络框架所做的。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2016-07-11
      • 2018-10-10
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      相关资源
      最近更新 更多