Я хотел бы добавить к тому, что уже было сказано, что ваш вопрос касается важного понятия в машинном обучении, которое называется трансферным обучением . На практике очень немногие люди обучают всю сверточную сеть с нуля (со случайной инициализацией), потому что это требует много времени и относительно редко иметь набор данных достаточного размера.
Современным ConvNets требуется 2-3 недели для обучения на нескольких графических процессорах ImageNet. Поэтому часто люди видят, как люди выпускают свои последние контрольные точки ConvNet для тех, кто может использовать сети для тонкой настройки. Например, в библиотеке Caffe есть модельный зоопарк, где люди делятся своими весами в сети.
Когда вам нужна ConvNet для распознавания изображений, независимо от того, в какой области находится ваше приложение, вам следует рассмотреть возможность использования существующей сети, например, VGGNet - это обычный выбор.
При выполнении трансферного обучения следует помнить несколько вещей :
Ограничения от предварительно обученных моделей. Обратите внимание, что если вы хотите использовать предварительно обученную сеть, вы можете быть немного ограничены с точки зрения архитектуры, которую вы можете использовать для своего нового набора данных. Например, вы не можете произвольно извлечь слои Conv из предварительно обученной сети. Однако некоторые изменения являются прямыми: благодаря совместному использованию параметров вы можете легко запустить предварительно обученную сеть на изображениях различного пространственного размера. Это ясно видно в случае слоев Conv / Pool, потому что их прямая функция не зависит от пространственного размера входного объема (до тех пор, пока шаги "вписываются").
Курсы обучения. Обычно для настраиваемых весов ConvNet используется меньшая скорость обучения по сравнению с весами (произвольно инициализированными) для нового линейного классификатора, который вычисляет оценки классов вашего нового набора данных. Это потому, что мы ожидаем, что веса ConvNet относительно хорошие, поэтому мы не хотим искажать их слишком быстро и слишком сильно (особенно, когда новый линейный классификатор над ними обучается из случайной инициализации).
Дополнительная справка, если вас интересует эта тема: Насколько переносимы функции в глубоких нейронных сетях?