Вы не сказали, можно ли использовать существующую структуру или необходимо реализовать решение с нуля, но в любом случае Python является отличным языком для кодирования нейронных сетей.
Если вы можете использовать рамки, проверьте Theano, который написан на Python и является наиболее полной нейронной структурой сетей доступны на любом языке:
http://www.deeplearning.net/software/theano/
Если вам нужно написать реализацию из поцарапать, посмотреть на книгу «Машиноведение, алгоритмическая перспектива» Стивена Марсленда. Он содержит пример кода Python для реализации базовой многослойной нейронной сети.
Как для продолжения, вы захотите преобразовать свои изображения в одномерные входные векторы. Не беспокойтесь о потере двумерной информации, сеть узнает «восприимчивые поля» самостоятельно, чтобы извлекать 2-D функции. Нормализовать интенсивность пикселей в диапазоне от -1 до 1 (или, еще лучше, 0 со стандартным отклонением 1). Если изображения уже центрированы и нормализованы примерно до того же размера, что и достаточная простая сеть прямой пересылки. Если автомобили сильно разнятся под углом или на расстоянии от камеры, вам может потребоваться использовать сверточную нейронную сеть, но это намного сложнее реализовать (в документации Theano есть примеры). Для базовой сети пересылки попробуйте использовать два скрытых слоя и от 0,5 до 1,5 x количество пикселей в каждом слое.
Разделите свой набор данных на отдельные тренировочные, валидационные и испытательные комплекты (возможно, с соотношением 0,6, 0,2, 0,2 соответственно) и убедитесь, что каждое изображение отображается только в одном наборе. Тренируйтесь ТОЛЬКО на тренировочном наборе и не используйте никакую регуляризацию до тех пор, пока вы не приблизитесь к 100% учебных случаев правильно. Вы можете использовать набор проверки, чтобы отслеживать прогресс в тех случаях, когда вы не обучаетесь. Производительность должна быть хуже на основании проверки, чем набор тренировок. Прекратите тренировки, когда производительность на наборе проверки перестанет улучшаться. Как только вы это сделаете, вы можете попробовать различные константы регуляризации и выбрать тот, который обеспечивает наилучшую производительность набора. Набор тестов покажет вам, насколько хорошо ваш конечный результат выполняет (но не меняйте ничего на основании результатов тестового набора, или вы тоже рискуете переутомлением!).
Если ваши изображения автомобиля очень сложны и разнообразны, и вы не можете получить базовую сеть подачи вперед, чтобы хорошо работать, вы можете использовать «глубокое обучение». То есть, добавьте больше слоев и предварительно подготовьте их, используя неконтролируемое обучение. Там есть подробное руководство о том, как сделать это здесь (хотя все примеры кода в Matlab/октава):
http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial
Опять же, что добавляет много сложности.Попробуйте сначала с базовым NN-переходом вперед.
Было бы полезно узнать более подробную информацию о проблеме, которую вы пытаетесь решить. Какая форма ввода у вас есть? Какой тип вывода вы хотите? У меня создалось впечатление, что у вас есть изображения как входные данные, и вы хотите классифицировать их в зависимости от типа транспортного средства, которое они изображают, - это правильно? – seaotternerd
@seaotternerd да точно – adil