首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Encog反向传播错误未更改

Encog反向传播错误未更改
EN

Stack Overflow用户
提问于 2016-12-29 10:44:57
回答 1查看 155关注 0票数 0

网络的总误差在100,000次以上的迭代中没有变化。输入是22个值,输出是单个值。输入数组是195,输出数组是195。

代码语言:javascript
复制
BasicNetwork network = new BasicNetwork();
    network.addLayer(new BasicLayer(null,true,22));
    network.addLayer(new BasicLayer(new ActivationSigmoid(),true,10));
    network.addLayer(new BasicLayer(new ActivationSigmoid(),false,1));
    network.getStructure().finalizeStructure();
    network.reset();


    MLDataSet training_data = new BasicMLDataSet(input, target_output);
    final Backpropagation train = new Backpropagation(network, training_data);

    int epoch = 1;

    do {
        train.iteration();

        System.out.println("Epoch #" + epoch + " Error:" + train.getError());

        epoch++;
    } 

    while(train.getError() > 0.01);
    {
        train.finishTraining();
    }

这段代码有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2017-01-04 20:34:32

根据您尝试分类的数据,您的网络可能太小,无法将搜索空间转换为线性可分问题。因此,尝试添加更多的神经元或层-这可能需要更长的训练时间。除非它已经是线性可分的,那么NN可能是解决这个问题的一种低效方法。

此外,你也没有训练策略,如果神经网络在误差曲面上陷入局部最小值,它就会卡在那里。请参阅encog用户指南https://s3.amazonaws.com/heatonresearch-books/free/Encog3Java-User.pdf pg 166,其中包含培训策略的列表。

代码语言:javascript
复制
final int strategyCycles = 50;
final double strategyError = 0.25; 
train.addStrategy(new ResetStrategy(strategyError,strategyCycles));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41372465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档