Увеличьте размер слоя, оставив старые веса замороженными - PullRequest
0 голосов
/ 02 августа 2020

Сейчас я пытаюсь реализовать следующую процедуру: сначала у меня есть обученный автоэнкодер, а затем я думаю об увеличении размера слоя узкого места (увеличении количества «нейронов» в этом слое). И затем я хотел бы обучить увеличенную модель в целом, сохраняя при этом веса, соответствующие более старым слоям, замороженными. Общая идея состоит в том, что, возьмем MNIST в качестве примера, какие функции будут выводить эти новые нейроны (какие детали эти нейроны добавят к исходным выводам)? Моя идея реализовать это состоит в том, что сначала мы обучаем нормальный автоэнкодер, а затем я могу построить ту же модель, за исключением увеличения размера слоя узкого места. Затем я загружаю веса в эту новую модель и фиксирую их. Но я столкнулся с двумя проблемами:

  1. Как загрузить веса, которые принимают только часть нового вектора весов (так как старый размер узкого места меньше нового)?
  2. Как сделать сохранить часть веса фиксированной? Возьмем, к примеру, keras, он позволяет не тренировать только весь слой (установите training = false).

1 Ответ

0 голосов
/ 28 августа 2020

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

Изначально ваш слой - conv2d (output_layers = a). Таким образом, поток будет Layer-1 -----> conv2d --- a -> Layer2

Затем, если вы хотите, наконец, иметь слои a + b, вы можете добавить в свой код, что conv2d ( output_layers = b) из вывода уровня-1. Таким образом, на выходе будет размер элемента «b» из этой новой свертки и «a» из исходного. Оба могут быть объединены, чтобы получить размер «a + b». Поток будет следующим: Layer-1 ----> concat (conv2d (a) + conv2d (b)) --- a + b ----> Layer2

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

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