我在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
如果输入变量在小范围内,则nn容易收敛(成本约0.0001),例如:-1到1或-5到5.但是如果我增加范围,它就不会收敛。对于小输入范围会聚的相同网络不会在大范围内收敛。为什么会这样?如何训练大范围,例如; -100到100等。
答案 0 :(得分:0)
神经网络通常在标准化或标准化输入上表现更好,因为它们的梯度在反向传播期间表现更好。这有很多原因,但是例如较大的特征会对渐变产生更大的影响,这不一定是您想要的。有关深入讨论,您可以在CrossValidated上看到this answer。
标准化数据的一种方法是使用sklearn.preprocessing.StandardScaler。
更容易在输入处添加Batch Normalization图层,但这会减慢训练速度。