2016-09-15 5 views
4

Я хочу, чтобы загрузить данные из CSV файла, как это:Encog загрузки CSV файла с настроенной сети

var format = new CSVFormat('.', ' '); 
IVersatileDataSource source = new CSVDataSource(filename, false, format); 
var data = new VersatileMLDataSet(source); ... 

Тогда у меня есть два варианта:

Использование 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). Все, что я получаю, это некоторая стандартная сеть с прямым доступом с одним скрытым слоем.


Я не знаю, как можно легко получить входные и выходные массивы отдельно для моей собственной сети (второй вариант) от VersatileMLDataSet. Я могу получить целый массив (input + output), но должен быть способ получить только входной массив или выходной массив.

ответ

3

Я нашел ответ в документации (Encog Метод & Обучение Фабрики, стр 75), с EncogModel можно подгоняет сети, как это:

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

Приведенный выше код создает нейронную сеть с двумя входными нейроны и один выход нейрона. Есть четыре скрытых нейрона. Нейроны смещения помещаются на входные и скрытые слои. Как типично для нейронных сетей, на выходном слое нет смещенных нейронов. Сигмоидная активация используется как между входным, так и скрытым нейронами, а также между скрытым и выходным уровнями. Вы можете заметить два вопроса: меток в строке архитектуры нейронной сети. Они будут заполнены в соответствии с размерами ввода и вывода, указанными в методе создания , и являются необязательными. Вы можете жестко закодировать размеры ввода и вывода. В в этом случае номера, указанные в вызове create, будут игнорироваться.

Смежные вопросы