Как использовать предварительно обученное обнаружение объектов в тензорном потоке? - PullRequest
0 голосов
/ 18 октября 2019

Как я могу использовать веса предварительно обученной сети в моем проекте tenorflow? Я знаю некоторые теоретические сведения об этом, но нет информации о кодировании в тензорном потоке.

1 Ответ

0 голосов
/ 18 октября 2019

Как отметил @Matias Valdenegro в комментариях, ваш первый вопрос не имеет смысла. Для вашего второго вопроса, однако, есть несколько способов сделать это. Термин, который вы ищете, является переводным обучением (TL). TL означает перенос «знаний» (в основном это просто веса) из предварительно обученной модели в вашу модель. Теперь есть несколько типов TL.

1) Вы переносите все веса из предварительно обученной модели в вашу модель и используете ее в качестве отправной точки для обучения вашей сети.

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

2) Вы переносите только некоторые веса из предварительно обученной модели в вашу новую модель.

  • Это делается в ситуации, когда у вас есть модель, подготовленная для классификации, скажем, между 5 классами объектов. Теперь вы хотите добавить / удалить класс. Вам не нужно переучивать всю сеть с самого начала, если новый класс, который вы добавляете, имеет схожие функции с существующими классами. Поэтому вы строите другую модель с той же точной архитектурой, что и у предыдущей модели, за исключением полностью связанных слоев, где теперь у вас другой выходной размер. В этом случае вы захотите загрузить веса сверточных слоев из предыдущей модели и заморозить их, только переучив только полностью связанные слои.

Чтобы выполнить их в Tensorflow,

1) Первый тип TL может быть выполнен путем создания модели с той же точной архитектурой, что и у предыдущей модели, и простой загрузки модели с использованием tf.train.Saver (). Restore () и продолжить обучение.

2) Второй тип TL может быть выполнен путем создания модели с точно такой же архитектурой для деталей , где вы хотите сохранитьweights , а затем укажите имя весов, в которые вы хотите загрузить данные из предыдущих предварительно обученных весов. Вы можете использовать параметр "trainable = False" для предотвращения их обновления Tensorflow.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...