我正在为我的模型使用backpropogation算法。它可以很好地处理一个简单的xor情况,当我测试它的实际数据的一小部分时。
总共有3个输入和一个输出(0,1,2)
我已将数据集拆分为训练集(80%达到约5.5k),其余20%作为验证数据。
我使用trainingRate和动量来计算delta权重。
我已将输入标准化为
来自sklearn导入预处理
min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(input_array)
我分别使用1个带有sigmoid和线性激活函数的隐藏层来输入隐藏和隐藏输出。
我训练时训练率= 0.0005,动量= 0.6,时期= 100,000。任何更高的训练率都会将错误提交给Nan。 0.5和0.9之间的动量值工作正常,任何其他值使得误差为Nan。
我在隐藏层中尝试了不同数量的节点,例如3,6,9,10,并且在每种情况下误差收敛到4140.327574。我不知道如何减少这个。更改激活功能没有帮助。我甚至尝试添加另一个具有高斯激活功能的隐藏层,但我不能减少任何错误。
是不是因为异常值?我是否需要从训练数据中清除这些值?
任何建议对激活功能,隐藏层等都有很大的帮助。我一直试图让它工作很长一段时间,我现在有点困惑。
答案 0 :(得分:0)
我有类似的问题,仍然没有解决它,但我可以告诉你一些我发现的事情。我认为网络过度拟合,我的错误在某个时候会下降,然后再次开始上升,同样是验证集......你也是这样吗?
检查你是否正在好好地实施"提前停止"算法,大多数时候问题不是反向传播,而是错误分析或验证分析。
希望这有帮助!