6

Объекты, которые я видел в действии, не были чем-то вроде XOR, который представляет собой всего лишь два небольших массива данных ... Я ничего не смог выяснить из документации по адресу MLDataSet.Encog - Как загрузить данные обучения для нейронной сети

Кажется, что все должно быть загружено сразу. Тем не менее, я хотел бы зацикливать данные обучения до тех пор, пока не достигню EOF, а затем сосчитаю это как 1 эпоху. Однако все, что я видел, все данные должны быть загружены в 1 2D-массив с самого начала. Как я могу обойти это?

I've read this question, and the answers didn't really help me. И кроме того, я не нашел подобного вопроса, заданного здесь.

+0

Из любопытства: зачем вы хотите передавать данные, это вопрос памяти/объема? –

+1

@ ElmarWeber, потому что данные довольно большие, и что еще более важно, у меня уже есть реализация с другой нейронной сетью. Реализация backpropagates одного входа за раз, и я просто перебираю весь входной файл и вызывая mlp.backprop (nextInput) для каждого проверенного элемента. – jonbon

ответ

2

Возможно, вы можете использовать существующую реализацию набора данных, поддерживающего операцию потоковой передачи, или вы можете реализовать свой собственный поверх любого источника, который у вас есть. Ознакомьтесь с кодом the BasicMLDataSet interface и кодом SQLNeuralDataSet. Вам потребуется реализовать кодек, если у вас есть определенный формат. Для CSV есть реализация уже, я не проверял, если она основана на памяти.

Помните, когда вы делаете это, ваши данные будут передаваться полностью для каждой эпохи и из моего опыта, который является намного более узким местом, чем фактическое вычисление сети.

+1

В принципе, данные, которые я тренирую в сети, поступают от Brown Corpus. Это не похоже на примеры с простым XOR, где я могу его жестко закодировать. В настоящее время у меня есть файлы Brown Corpus, где каждое слово и теги разделены пробелами. Сеть, которую я использовал в настоящее время, не загружала весь корпус в память, а загружала предложение по предложению и тренировалась (отбрасывая) одно слово за раз. Имеет ли это смысл? Я просто пытаюсь использовать другую сеть, потому что я думаю, что может быть ошибка в сети, которую я сейчас использую. – jonbon

+0

Не уверен, правильно ли я понял, но как вы его описываете, это означает, что способ реализации SQLNeuralDataSet будет работать, не так ли? Вы кодируете значения ввода и вывода для каждого слова, запускаете backprop, получаете следующий и т. Д. Если вы действительно хотите идти по строкам и не работать в пакетах по умолчанию, просто установите размер партии в один. В конце у вас есть два фрагмента кода: Corpus Data для MLData для одного элемента ввода и вывода и что-то, что передает эту строку за строкой. –

+1

Хорошо, факт, что я использую текстовый файл, а не SQL, заставил меня даже не рассмотреть SQLNeuralDataSet, спасибо, я загляну в него! – jonbon

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