优化模型TensorFlow估计API工作的某些变量

问题描述 投票:1回答:1

我需要冻结我的模型的一部分,培养只有某些变量。现在,随着低级别的API,我可以通过var_listtf.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或有与估计这样做的更好的办法?

tensorflow machine-learning tensorflow-estimator
1个回答
1
投票

你可以简单地通过指定model_fn功能进行自定义估计

    def model_fn(features, labels, mode):
      logits = model_architecture(features)
      loss = loss_function(logits, labels)
      if mode == tf.estimator.ModeKeys.TRAIN:
        optimizer = optimizer
        train_op = ontimizer.minimize(loss=loss, 
                                      global_step=global_step,
                                      var_list=variables_to_minimize)

      return tf.estimator.EstimatorSpec(mode=mode, loss=loss, train_op=train_op)
© www.soinside.com 2019 - 2024. All rights reserved.