我正在训练这个 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
我的输入和输出是标准化的(0 均值,方差 1),我使用的是 tanh 激活函数。所有网络算法似乎都能正常工作:我使用相同的实现来近似 sin 函数,它做得很好。
现在,问题正如标题所暗示的那样:我应该分别标准化每个训练/验证集还是只需要标准化整个数据集一次?
请注意,如果我做后者,网络不会产生有意义的预测,但我更喜欢有一个更“理论”的答案,而不是只看输出。
顺便说一句,我用 C 实现了它,但我对 C++ 也很满意。