Encog如何加载自定义网络的CSV文件

4
我想从类似这样的CSV文件中加载数据:
var format = new CSVFormat('.', ' '); 
IVersatileDataSource source = new CSVDataSource(filename, false, format);
var data = new VersatileMLDataSet(source); ...

Then I have two options:

Use EncogModel

var model = new EncogModel(data);
model.SelectMethod(data, MLMethodFactory.TypeFeedforward); ...

建立自己的网络
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 11));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 8));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, 5)); 
...
IMLDataSet trainingSet = new BasicMLDataSet(input, output);

我不知道如何使用Encog Model这个选项来设置神经网络的层数、神经元数量和激活函数。我只能得到一个默认的前馈神经网络,只有一个隐藏层。


我不知道如何从VersatileMLDataSet中轻松地分别获取自己网络的输入和输出数组(第二个选项)。我可以获取整个数组(包括输入和输出),但一定有办法只获取输入数组或输出数组。

1个回答

3

我在文档中找到了答案(Encog方法和训练工厂,第75页),使用EncogModel可以定制化网络,如下所示:

var methodFactory = new MLMethodFactory();
var method = methodFactory . Create(
MLMethodFactory .TYPEFEEDFORWARD,
”?:B−>SIGMOID−>4:B−>SIGMOID−>?”,
2,
1);

以上代码创建了一个神经网络,有两个输入神经元和一个输出神经元。其中有四个隐藏神经元。偏置神经元放置在输入和隐藏层中。与神经网络通常一样,输出层上没有偏置神经元。在输入和隐藏神经元之间,以及隐藏和输出层之间使用Sigmoid激活函数。您可能会注意到神经网络结构字符串中的两个问号。这些将由create方法中指定的输入和输出层大小填充,并且是可选的。您可以硬编码输入和输出大小。在这种情况下,create调用中指定的数字将被忽略。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接