【发布时间】:2019-07-05 05:36:59
【问题描述】:
我需要冻结部分模型并只训练某些变量。现在,使用低级 API,我可以将 var_list 传递给 tf.train.Optimizer.minimize 方法。但是,当我使用 TensorFlow Estimator 时,我只能传递优化器本身,然后将其用于最小化 Estimator 内部循环内的损失。
我想到的唯一解决方案是定义一个自定义优化器并覆盖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)
现在,我希望在每个训练步骤中都能在屏幕上看到“Inside...”短语;特别是当我看到模型训练得很好时。这有点表明我的 minimize 函数被完全忽略了,我似乎无法弄清楚原因。
那么,覆盖 minimize 是否正确,或者是否有更好的方法来使用 Estimators?
【问题讨论】:
标签: tensorflow machine-learning tensorflow-estimator