标签: encog

Encog C#RBF网络,如何启动?

我经历了整个文档,并没有找到如何设置RBF网络.我在ConsoleExmpales/Examples/Radial中找到了一些RBF示例,但看起来它不再起作用,因为在Encog中已经更改了一些方法.

到目前为止,我坚持这个:

    public static double[][] XORInput = {
        new[] {0.0, 0.0},
        new[] {1.0, 0.0},
        new[] {0.0, 1.0},
        new[] {1.0, 1.0}
    };

    public static double[][] XORIdeal = {
        new[] {0.0},
        new[] {1.0},
        new[] {1.0},
        new[] {0.0}
    };

        int dimension = 8;
        int numNeuronsPerDimension = 64;
        double volumeNeuronWidth = 2.0 / numNeuronsPerDimension;
        bool includeEdgeRBFs = true;

        RBFNetwork n = new RBFNetwork(dimension, numNeuronsPerDimension, 1, RBFEnum.Gaussian);
        n.SetRBFCentersAndWidthsEqualSpacing(0, 1, RBFEnum.Gaussian, volumeNeuronWidth, includeEdgeRBFs);
        //n.RandomizeRBFCentersAndWidths(0, 1, RBFEnum.Gaussian);

        INeuralDataSet trainingSet = new BasicNeuralDataSet(XORInput, XORIdeal);
        SVDTraining train = new …
Run Code Online (Sandbox Code Playgroud)

c# radial neural-network encog

11
推荐指数
1
解决办法
709
查看次数

足球预测程序包含:不一致的预测

我正在制作一个程序,使用encog预测足球比赛的结果.我创建了一个神经网络,使用弹性传播训练方法训练了90个匹配的数据.我已经将比赛结果标记为1表示主场胜利,0表示平局,-1表示客场胜利.

问题在于预测.有时我获得50%的成功率,而其他时间我得到低至33%.这就像使用随机函数.我注意到的是,最接近预测的结果是1(约70%).我已经尝试过改变隐藏层数,训练次数但没有运气,它仍在振荡.如果我做错了什么,任何人都可以帮助我或者让我朝着正确的方向前进.

这是神经网络的代码.我正在从数据库获取训练数据和预测数据.

Predictor(NeuralDataSet trainingData){
    trainingSet = trainingData;
    network = new BasicNetwork();
    network.addLayer(new BasicLayer(16));
    network.addLayer(new BasicLayer(3));
    network.addLayer(new BasicLayer(1));
    network.getStructure().finalizeStructure();
    network.reset();
}
Run Code Online (Sandbox Code Playgroud)

训练

public void train(int epoch){
    int i =0;
    final Train train =new ResilientPropagation(network,trainingSet);
    while(i<=epoch){
        train.iteration();
        i++;
    }

}
Run Code Online (Sandbox Code Playgroud)

预测

public void successRate(NeuralDataSet trainingData){
    int counter = 0;
    int correct = 0;
    int home=0;
    int away=0;
    int draw=0;
    for(MLDataPair pair: trainingData ) {
        final MLData output = network.compute(pair.getInput());
        if(pair.getIdeal().getData(0)==Math.round(output.getData(0)))
            correct++;
        counter++;
    }
    System.out.println((double)correct/(double)counter);
}
Run Code Online (Sandbox Code Playgroud)

1.)我将数据提供给神经网络1000.目前正在进行更多/更少的测试,因为事情变得更好.

2,3.)我有16个输入参数.他们包括:主队积分,主场主场胜利,平局,失利,主队总胜场,失利,平局和形式(最近5场比赛得分).相同的数据仅用于客场球队,而不是主队主场胜利,平局,失去球队客场胜利,平局,亏损被使用.我将尝试不同的训练数据.

java neural-network encog

9
推荐指数
1
解决办法
2494
查看次数

Encog或Neuroph可以在Android上运行吗?

我正在编写一个将执行图像识别和分析的Android应用程序.我听说神经网络是执行图像识别的更好方法之一,并试图移植CodeProject上的Mike O'Neill在他出色的Win32手写数字识别应用程序中使用的库.然而,我最近被告知Encog和Neuroph这两个用于神经网络/图像识别的杰出Java库.我只需要神经网络就可以工作,我将围绕另一个神经网络库编写自己的图像识别套件.有没有人知道Encog或Neuroph是否可以在Android上运行,最好是Encog?

编辑:我已经用Google搜索过了,我想知道是否有人能够真正证明图书馆在工作.

android neural-network encog

6
推荐指数
1
解决办法
2316
查看次数

Neuroph Vs Encog

我决定使用带有反向传播训练的前馈NN来为我的OCR应用程序提供手写文本,输入层将使用32*32(1024)个神经元和至少8-12个输出神经元.

通过同时阅读一些文章我发现Neuroph很容易使用,而Encog在性能方面要好几倍.考虑我的场景中哪些API是最合适的参数.如果你能评论我已经采取的输入节点的数量,我是否感谢,是否它的值太大(虽然它超出了主题)

neural-network encog

6
推荐指数
1
解决办法
2637
查看次数

如何使用Encog标准化CSV文件?

我需要规范化CSV文件.我跟着杰夫希顿写的这篇文章.这是(部分)我的代码:

File sourceFile = new File("Book1.csv");
File targetFile = new File("Book1_norm.csv");
EncogAnalyst analyst = new EncogAnalyst();
AnalystWizard wizard = new AnalystWizard(analyst);
wizard.wizard(sourceFile, true, AnalystFileFormat.DECPNT_COMMA);
final AnalystNormalizeCSV norm = new AnalystNormalizeCSV();
norm.analyze(sourceFile, false, CSVFormat.ENGLISH, analyst);
norm.setProduceOutputHeaders(false);
norm.normalize(targetFile);
Run Code Online (Sandbox Code Playgroud)

我的代码和文章之一的唯一区别是这一行:

norm.setOutputFormat(CSVFormat.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

我试图使用它,但似乎在Encog 3.1.0中,该方法不存在.我得到的错误就是这个(看起来问题出在线上norm.normalize(targetFile):

Exception in thread "main" org.encog.app.analyst.AnalystError: Can't find column: 11700
    at org.encog.app.analyst.util.CSVHeaders.find(CSVHeaders.java:187)
    at org.encog.app.analyst.csv.normalize.AnalystNormalizeCSV.extractFields(AnalystNormalizeCSV.java:77)
    at org.encog.app.analyst.csv.normalize.AnalystNormalizeCSV.normalize(AnalystNormalizeCSV.java:192)
    at IEinSoftware.main(IEinSoftware.java:55)
Run Code Online (Sandbox Code Playgroud)

java neural-network encog

6
推荐指数
1
解决办法
2398
查看次数

Encog中的多类SVM分类

有人可以告诉我如何在Encog 3.1中使用多类SVM分类?

我已经使用他们的神经网络取得了一些成功,但无法弄清楚如何设置多类SVM.

文档有这样的说法:

"这是一个由一个或多个支持向量机(SVM)支持的网络.它的设计功能与Encog神经网络非常相似,并且在很大程度上可与Encog神经网络互换.分类用于你希望SVM将输入数据分组到一个或多个类中.支持向量机通常只有一个输出.神经网络可以有多个输出神经元.为了解决这个问题,如果有多个SVM,这个类将创建多个SVM输出指定"

但是我看不出如何指定多个输出,实际上输出属性只返回1:

 /// <value>For a SVM, the output count is always one.</value>
    public int OutputCount
    {
        get { return 1; }
    }
Run Code Online (Sandbox Code Playgroud)

Java或c#中的答案非常感谢

编辑仍然无法解决这个问题.真的很享受使用Encog,但支持论坛只有Jeff Heaton(项目的作者)在他有机会时自己回答,所以即时联系项目代码并添加赏金,希望有人能看到我明显缺少的东西.

该项目:http: //heatonresearch.com/

Google代码上的SupportVectorMachine类:https: //code.google.com/p/encog-cs/source/browse/trunk/encog-core/encog-core-cs/ML/SVM/SupportVectorMachine.cs

c# java svm encog

6
推荐指数
1
解决办法
2864
查看次数

Encog - 如何加载神经网络的训练数据

NeuralDataSet我在行动中看到的 对象并不是XOR,只是两个小数据阵列......我无法从文档中找到任何内容MLDataSet.

似乎一切都必须立即加载.但是,我想循环训练数据,直到我达到EOF,然后将其计为1个纪元.但是,我所看到的所有数据必须从头开始加载到1个2D数组中.我怎么能绕过这个?

我已经读过这个问题了,答案并没有真正帮助我.除此之外,我还没有在这里找到类似的问题.

java artificial-intelligence machine-learning neural-network encog

6
推荐指数
1
解决办法
1056
查看次数

NEAT上的任何Encog文档?

是否有关于如何使用Encog Framework的详细文档?我知道在现有的用户指南UserGuide,并在C#示例encog的github仓库

但是我专注于使用NEAT网络,并且只有XOR示例可用.到目前为止,代码如下所示:

Dim inputNeurons As Integer = 6, outputNeurons As Integer = 2

Dim trainedNetwork As NEATNetwork
Dim network As New NEATPopulation(inputNeurons, outputNeurons, 5000)
network.Reset()
network.InitialConnectionDensity = 100.0   

Dim speciation As New OriginalNEATSpeciation()
speciation.CompatibilityThreshold = 1

Dim trainer As TrainEA
trainer = NEATUtil.ConstructNEATTrainer(network, New networkScore())
trainer.Speciation = speciation

epoch = 1
iterationLimit = 30
i = 1
While i <= iterationLimit
    trainer.Iteration() 
    Console.WriteLine("Iteration #" & i & "/" & iterationLimit & " #" + epoch.ToString + …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network genetic-algorithm encog es-hyperneat

6
推荐指数
1
解决办法
321
查看次数

时间序列预测包含从CSV读取的3个java

我正在开发一个时间序列预测系统.我买了Book of Encog3 for Java,但我需要知道热,提交一个包含3列的CSV文件并尝试预测第二列.CSV定义如下:

Date,DeviceConsumption,TotalPower

我需要将该文件加载到加载器中,然后指定我想要预测的列(即DeviceConsumption).第三列用于提供更多信息并创建模式.

在示例中(如太阳黑子)我看到了

TemporalMLDataSet result = new TemporalMLDataSet(windowSize,1);
TemporalDataDescription desc = new TemporalDataDescription(new ActivationSIN(),Type.RAW, false, true);

result.addDescription(desc);
Run Code Online (Sandbox Code Playgroud)

但是我在哪里可以定义我想要预测的列?

谢谢.

编辑2 我做了一些改进:

对不起,我还是不明白.我能够像你说的那样创建2个TemporalDataDescription.但是我要将两者都添加到相同的TemporalMLDataSet中吗?

TemporalMLDataSet result = new TemporalMLDataSet(WINDOW_SIZE,1);
TemporalDataDescription desc = new TemporalDataDescription(
TemporalDataDescription.Type.RAW,true,true);
    result.addDescription(desc);
TemporalDataDescription desc2 = new TemporalDataDescription(
TemporalDataDescription.Type.RAW,false,true);
    result.addDescription(desc2);

    for(int year = TRAIN_START;year<TRAIN_END;year++)
    {
        TemporalPoint point = new TemporalPoint(2);
        point.setSequence(year);
        point.setData(0, this.deviceConsumption[year]);
        point.setData(1, this.TotalPower[year]);
        result.getPoints().add(point);

    }
    result.generate();
Run Code Online (Sandbox Code Playgroud)

这是对的吗?

EDIT3以前的代码是正确的!

java csv time-series encog

5
推荐指数
1
解决办法
1784
查看次数

有没有办法训练一个Encog神经网络而不加载内存中的所有训练集?

我一直在使用.NET框架来训练神经网络,我的数据集非常庞大,输入数量很多.

我决定切换到Encog,因为我使用的旧框架存在一些问题,而且因为Encog看起来更丰富并且提供了额外的功能.

我的问题是Encog将所有训练数据一次加载到2D数组中,这不适合我,因为我有一个非常大的数据集.我已经尝试过解决这个问题,并检查了其他问题(例如这个问题,但找不到一个好的答案).

我尝试使用SQLNeuralDataSet和其他支持流操作的实现,但它们似乎最终都将数据加载到内存中(使用MemoryDataLoader),这并不能解决我的问题.

有没有办法可以一次加载(和训练)我的网络一个项目?或者这个选项在Encog中不可用?

谢谢

编辑

我最终复制了源代码并根据我的需要进行了修改.基本上,这一切都归结于Process(IMLDataPair pair)GradientWorker其中,根据文档:

处理一个训练集元素.

.net artificial-intelligence machine-learning neural-network encog

5
推荐指数
1
解决办法
601
查看次数