Я строю рекуррентную нейронную сеть с deeplearning4j, и мне нужно создать обучающие и тестовые наборы данных.
Все примеры, представленные в документации и примере кода , используйте CSVSequenceRecordReader
для чтения файлов CSV.
Затем создается DataSetIterator
с помощью конструктора SequenceRecordReaderDataSetIterator
и подается в метод MultiLayerNetwork.fit()
или MultiLayerNetwork.evaluate()
(в зависимости от того,итератор набора обучающих или тестовых данных).
Однако в моем случае набор данных, который у меня есть, не сохраняется в файле CSV.Я получаю к нему доступ через стороннюю библиотеку, предварительно обрабатываю ее, чтобы получить объекты List<Data>
и List<Labels>
.
Как я могу:
1) создать DataSetIterator
из двух моих списков?
2) разделить DataSetIterator
на тренировочный набор и тестовый набор?
Редактировать :
Я думаюмой вопрос слишком широк.Позвольте мне попытаться сузить его.
Я начал читать эту статью , которая использует очень простой подход для создания набора данных:
Создает два INDArrays истроит DataSet из них, используя конструктор DataSet(INDArray first, INDArray second)
.
Обучение данных работает с использованием network.fit(dataSet);
, но я не могу оценить его во время обучения, так как метод evaluate
требует итератор набора данных, а ненабор данных.
Более того, насколько я понимаю, использование этого подхода также означает, что существует только один огромный набор данных, без мини-пакетов.
Я также предполагаю, что я мог бы создавать мини-пакетыиз этого большого набора данных с использованием метода batchBy(int num)
.Но этот метод возвращает список наборов данных, а не итератор набора данных ... iterateWithMiniBatches () действительно возвращает итератор набора данных, но когда я посмотрел на исходный файл, он возвращает ноль и устарел.Затем я попытался увидеть, есть ли реализация DataSetIterator, которую я мог бы использовать, но их много.Я попробовал BaseDataSetIterator, но он принимает не DataSet в качестве параметра конструктора, а DataSetFetcher ... Еще один слой.
Есть ли где-нибудь пример, который показывает, как создать набор данных без использования программ чтения по умолчанию?Или я должен просто создать свою реализацию считывателя записей?