创建以下神经网络后:
nn = new BasicNetwork();
nn.addLayer(new BasicLayer(null, true, 29));
nn.addLayer(new BasicLayer(new ActivationReLU(), true, 1000));
nn.addLayer(new BasicLayer(new ActivationReLU(), true, 100));
nn.addLayer(new BasicLayer(new ActivationReLU(), true, 100));
nn.addLayer(new BasicLayer(new ActivationTANH() ,false, 4));
nn.getStructure().finalizeStructure();
nn.reset();
我遇到了一个错误,错误大10 ^ 38。这太疯狂了。 因此,我自己编写了错误函数代码,并注意到错误仍然很大。我首先检查了我的IdealOutputs,发现它们都在-1到1的范围内。尽管如此,计算出的Outputs大于1。 因此,我得出一个浮点错误。
我的结论正确吗? 下次如何避免此类愚蠢且耗时的错误?
真诚的
编辑:
nn = new BasicNetwork();
nn.addLayer(new BasicLayer(null, true, 29));
nn.addLayer(new BasicLayer(new ActivationSigmoid(), true, 1000));
nn.addLayer(new BasicLayer(new ActivationSigmoid(), true, 100));
nn.addLayer(new BasicLayer(new ActivationSigmoid(), true, 100));
nn.addLayer(new BasicLayer(new ActivationTANH() ,false, 4));
nn.getStructure().finalizeStructure();
nn.reset();
使用Sigmoid函数后,仍然会出现问题。 该如何解决?
答案 0 :(得分:1)
- Write using a very smaller learning rate like 0.0001 or even smaller.
- Randomly initialize the weights.
- Initialize the biases as 1 initially.
- Try using Batch Normalization
ReLU函数实际上不能压缩值,因为数字为正,它将获得y = x。 由于梯度增加,该值继续变得更大。