如何使用apply_gradients方法在Tensorflow中实现外部优化器?

时间:2017-01-18 16:23:01

标签: python optimization tensorflow

我试图定义一些新的优化算法。我找到了一个关于外部优化器here的界面。它说我需要继承它并实现_minimize。但是,我需要在使用外部优化器时调用apply_gradients。我该如何实施呢?

例如,我想自己实现一个自定义优化器,所以我查看了外部优化器,它说:

class ExternalOptimizerInterface(object):
    """Base class for interfaces with external optimization algorithms.

       Subclass this and implement `_minimize` in order to wrap a new optimization algorithm.'''

还有一个官方示例,说明如何在here中使用此外部优化器界面。

  class MockOptimizerInterface(external_optimizer.ExternalOptimizerInterface):
     NUM_STEP_CALLS = 5
     NUM_LOSS_CALLS = 2

     def _minimize(self, initial_val, loss_grad_func, step_callback,
                optimizer_kwargs, **unused_kwargs):
       """Minimize (x - x0)**2 / 2 with respect to x."""
       for _ in range(self.NUM_LOSS_CALLS):
         loss_grad_func(initial_val)
       for _ in range(self.NUM_STEP_CALLS):
         step_callback(initial_val)

       _, grad = loss_grad_func(initial_val)
       return initial_val - grad

模拟优化器用于第85行和第90行:

optimizer = MockOptimizerInterface(loss)

optimizer.minimize(sess)

似乎我们覆盖了“最小化”' ExternalOptimizerInterface的功能。但有时,我需要使用Optimizer.apply_gradients()。我该怎么办?

0 个答案:

没有答案