Я пытаюсь заморозить определенные переменные на основе флага после определенных эпох. Я просмотрел несколько похожих вопросов и ответов и написал следующий фрагмент:
self.optimizer = tf.cond(self.flag < 0.5, lambda: self.opt_1.minimize(self.loss), lambda: self.opt_1.minimize(self.loss, var_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,'ScopeOfVariable')))
self.flag
- это заполнитель. Для первой эпохи я задаю значение этого флага как 0, а затем для второй эпохи я устанавливаю его равным 1.
Для первой эпохи код запускается и дает мне значение потери. Но для второй эпохи код даже не закончился за часы, хотя первая эпоха закончилась за секунды. Я проверил память GPU и вычислил, используя nvidia-smi
, и он показал, что моя память GPU и вычисления используются.
Я что-то здесь упускаю?
Вопросы, которые я проверял перед публикацией:
Как заморозить определенные узлы в переменной тензорного потока во время обучения?
Как заморозить определенные узлы в переменной тензорного потока во время обучения?
https://www.quora.com/Is-it-possible-to-only-train-the-final-layer-of-a-Neural-Net-in-TensorFlow-that-was-already-trained