2016-03-15 2 views
0

У меня есть большое ведро S3, полное фотографий 4 разных типов животных. Мой набег на ML будет состоять в том, чтобы увидеть, смогу ли я успешно получить Deep Learning 4 Java (DL4J), чтобы показать новую произвольную фотографию одного из этих 4 видов и получить ее последовательно, правильно догадавшись, какое это животное.Фазы ML и DL4J по примеру

Мои понимания является то, что я должен сначала выполнить «учебных этап», который эффективно накапливается в (в памяти) нейронную сеть, которая состоит из узлов и весов, полученных как от этого S3 ведра (входные данные) и мое собственное кодирование и использование библиотеки DL4J.

После обучения (имея в виду, когда я в оперативной памяти нейронная сеть построена), то мой понимание, что я могу затем введите ноль или более «фазы тестирования», где я даю один новый образ как ввод, пусть программа решит, какой тип животного он считает изображением, а затем вручную маркирует результат как правильный (программа угадала правильно) или неверные w/исправления (программа догадалась неправильно, и, кстати, такая и поэтому был правильный ответ). Мой понимание заключается в том, что эти этапы тестирования должны помочь вам настроить алгоритмы и свести к минимуму ошибку.

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

Все это, чтобы спросить: есть ли у меня понимание базовой методологии ML и DL4J, или я вводил в заблуждение каким-либо образом?

ответ

1

Обучение: Это любой каркас. Вы также можете сохранить нейронную сеть также с помощью Java SerializationUtils или в новой версии, у нас также есть ModelSerializer.

Это скорее интеграционная игра, чем «может ли она сделать x?».

DL4j может интегрироваться с потоком kafka/spark и делать онлайн/мини-пакетное обучение.

Нейронные сети встраиваются в производственную среду.

Мой единственный совет здесь - убедиться, что у вас есть тот же конвейер данных для обучения и тестирования.

Это главным образом для обеспечения согласованности ваших данных, которые вы тренируетесь и тестируете.

Как и для обучения в мини-партии, у вас есть мини-приемник (правда) (по умолчанию), если вы выполняете мини-пакетное/онлайн-обучение или мини-чат (ложь), если вы тренируетесь по всему набору данных за один раз.

Я бы также предложил использовать StandardScalar (https://github.com/deeplearning4j/nd4j/blob/master/nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java/org/nd4j/linalg/dataset/api/iterator/StandardScaler.java) или что-то подобное для сохраняющейся глобальной статистики вокруг ваших данных. Большая часть конвейера данных будет зависеть от библиотек, которые вы используете для построения конвейера данных.

Я бы предположил, что вы хотите каким-то образом нормализовать свои данные.

+0

Удивительный ответ, спасибо @ Адам Гибсон (+1) - Я думаю, это мое зависание: определение * train * vs. * test *.Похоже на то, что я объяснил в своем вопросе как часть «** обучения **» и «** этапов тестирования **», действительно то, что DL4J (и, вероятно, все сообщество ML) называют «обучением» * , и то, что я назвал «производственной фазой **», действительно то, что люди ML/DL4J просто называют «тестированием *». Можешь подтвердить?! Еще раз спасибо! – smeeb

+0

На самом деле, похоже, что каштан с плесенью уже был [объяснен здесь] (http://stats.stackexchange.com/a/19051) - Я готов пойти, еще раз спасибо за разъяснение! – smeeb