Мне нужно заморозить части моей модели и обучить только определенным переменным.Теперь, с помощью низкоуровневого API, я могу просто передать var_list
методу tf.train.Optimizer.minimize
.Но когда я использую Оценщик TensorFlow, я могу пропустить только сам оптимизатор, который затем используется для минимизации потерь во внутреннем цикле Оценщика.
Единственное решение, которое мне приходит в голову, - это определить собственный оптимизатор и переопределить метод Optimizer.minimize
.Примерно так:
def minimize(self, *args, **kwargs):
print("Inside...")
if not kwargs['var_list']:
kwargs['var_list'] = self.var_list
return super(MyOptimizer, self).minimize(*args, **kwargs)
Теперь я ожидал увидеть фразу "Внутри ...", которая будет напечатана на экране на каждом этапе тренировки;особенно когда я вижу, что модель тренируется просто отлично.Это как бы показывает мне, что моя minimize
функция полностью игнорируется, и я не могу понять, почему.
Итак, даже правильно ли переопределить minimize
или есть лучший способ сделать это?это с оценщиками?