我正在训练这个5-5-2反向传播神经网络,在阅读了LeCun的这篇精彩文章之后,我开始实践他提出的一些想法.
目前我正在使用我自己制作的10倍交叉验证算法对其进行评估,其基本上是这样的:
for each epoch
for each possible split (training, validation)
train and validate
end
compute mean MSE between all k splits
end
Run Code Online (Sandbox Code Playgroud)
我的输入和输出是标准化的(0-均值,方差1),我正在使用tanh激活函数.所有网络算法似乎都正常工作:我使用相同的实现来近似sin函数,它做得非常好.
现在,问题是标题所暗示的:我应该单独标准化每个列车/验证集还是我只需要将整个数据集标准化一次?
请注意,如果我执行后者,网络不会产生有意义的预测,但我更喜欢有一个更"理论"的答案而不仅仅是查看输出.
顺便说一下,我用C语言实现了它,但我对C++也很满意.