Заморозить части нейронной сети в тензорном потоке

У меня есть глубокая сеть полностью связанных слоев, созданных с использованием Slim. Я хотел бы проводить обучение сети постепенно - сначала позволяя оптимизировать первый уровень, затем второй и так далее. Читая, я вижу, что это можно сделать с помощью tf.stop_gradient, хотя как это сделать, не ясно. Возможно, лучшим способом является использование обучаемого флага в тонком вызове - просто установите для всех, кроме первого слоя, значение false. К сожалению, это потребовало бы постепенного установления истины для последующих слоев в процессе обучения, изменения графика. Не уверен, что это законно.

Мои вопросы: - это разумные подходы к тому, что я хочу сделать? - может кто-нибудь подсказать, как реализовать тот или иной подход?

1 ответ

Общее использование примерно так:

optimizer = tf.train.GradientDescentOptimizer(learning_rate)
train_op = optimizer.minimize(loss_function)

Теперь вы можете предоставить minimize другой параметр, который var_list, это список переменных, которые вы хотите изменить, чтобы минимизировать вашу функцию loss_fuction.

Таким образом, вы можете оптимизировать только подмножество всех ваших переменных, то есть заморозить все остальные.

Таким образом, предположим, у вас есть график, который вы хотите оптимизировать сначала слой, а затем еще один слой. Затем вы можете использовать что-то вроде этого:

optimizer = tf.train.GradientDescentOptimizer(learning_rate)
train_op1 = optimizer.minimize(loss_function, var_list=<list of first layer variables>)
train_op2 = optimizer.minimize(loss_function, var_list=<list of second layer variables>)

И тогда, на этапе бега, вы будете запускать train_op1 а также train_op2 в соответствии с вашим графиком оптимизации (например, цикл на первом уровне, а затем цикл на втором уровне)

(PS None не мешает вам использовать две разные функции потерь только для первого слоя, а затем для обоих слоев. В этом случае оптимизатор минимизирует только те переменные, от которых зависит функция потерь.)

Другие вопросы по тегам