使用有限的数据改进神经网络,以便在C#和Encog

时间:2016-11-15 11:14:21

标签: c# neural-network encog

我正在研究一个神经网络项目,其中数据具有非线性行为,在C#和Encog中实现。

我的主要目标是预测价值观。

我有一些数据(有限),比如大约300个数据集。 在这些数据集中,我已将数据拆分用于培训和验证。网络的输入是26个神经元,输出是25。 我对数据进行了标准化并完成了培训。

我的训练方法是ResilientPropagation,并试用了不同数量的隐藏层。

        network.AddLayer(new BasicLayer(null, true, 26));
        network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationLOG(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationTANH(), true, 50));
        network.AddLayer(new BasicLayer(new ActivationLinear(), false, 25));

var train = new ResilientPropagation(network, foldedTrainingSet, 0.02, 10);

现在的问题是训练错误是200,验证错误太高了,就像2000或更多。

我曾尝试使用不同数量的图层和激活函数,例如Log,tanH和不同数量的隐藏神经元,但错误没有改善。

截至目前我的判断是,这个错误是由于数据集的限制(非线性行为)。

我的问题是,我是否可以通过使用一些不同的策略或激活功能或训练方法,使用当前数据集限制来改善我的网络中的非线性行为。

0 个答案:

没有答案