我试图定义一些新的优化算法。我找到了一个关于外部优化器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()。我该怎么办?