【问题标题】:neural network not training for long range神经网络不是长距离训练
【发布时间】:2017-07-25 16:31:52
【问题描述】:

我在 tensorflow 中创建了一个神经网络。网络是:

5 input variables a, b, c, d, e
y = sin(a)+ b + exp(c) - d*d + tanh(e)
50 neuron layer1, relu
20 neuron layer2, relu
10 neuron layer3, relu
1 neuron output layer

如果输入变量在小范围内,例如 -1 到 1 或 -5 到 5,则 nn 很容易收敛(成本约为 0.0001)。但如果我增加范围,它不会收敛。同一网络收敛于小输入范围,不收敛于大范围。为什么会这样?我如何训练大范围,例如; -100 到 100 等。

【问题讨论】:

  • 你能发布你的整个代码吗?

标签: tensorflow neural-network


【解决方案1】:

神经网络通常在标准化或归一化输入上表现更好,因为它们的梯度在反向传播期间表现更好。这有很多原因,但例如较大的特征将对梯度产生更大的影响,这不一定是您想要的。如需更深入的讨论,您可以在 CrossValidated 上查看 this answer

标准化数据的一种方法是使用sklearn.preprocessing.StandardScaler

更简单的方法是在您的输入中添加Batch Normalization 层,但这会稍微减慢训练速度。

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 2011-04-07
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多