0

Я создаю модель в тензорном потоке со всеми слоями, имеющими relu как слой активации. Однако, когда размер партии увеличивается до 500, я хочу изменить модель таким образом, чтобы второй последний уровень к выходному слою имел сигмоидный уровень активации.Изменение модели во время обучения [tensorflow]

В чем я смущен, так что мне нужно повторно инициализировать все переменные, так как я заменяю оптимизатор посередине? Или я сохраняю старые переменные?

+0

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

ответ

0

Это очень интересный вопрос. Я думаю, это зависит от ваших наборов данных и моделей.

Да: Возможно, вы можете использовать вес (до размера партии 500) как предварительно подготовленный, как то, что делают Deep Belief Networks (с RBM).

№: Возможно, эти заранее подготовленные веса не повредит вашей модели и может не лучше, чем другие хорошие инициализаторах, такие как Ксавье инициализаторе https://www.tensorflow.org/versions/r0.8/api_docs/python/contrib.layers.html#xavier_initializer

Я думаю, что стоит попробовать оба варианта.

+0

Для начала, что я собирался попробовать, было копирование модели и просто обновление последней ссылки активации между последним скрытым слоем и выходным слоем. Если да, есть ли способ сохранить одну и ту же модель, но обновить ссылку активации? – user782400

+0

Я не пробовал, но вы можете иметь две сети в одной программе и запускать (оценивать) одну до 500 итераций и запускать другую. Думаю, это может сработать. –

+0

Если я использую другую модель, разве это не трэш всех моих обучаемых переменных? Это означало бы, что модель, которую я тренировал (до размера партии 500), была бы бесполезной. Правильно? – user782400

Смежные вопросы