如何在Tensorflow中加速ExternalOptimizerInterface?

时间:2018-09-19 19:00:27

标签: tensorflow machine-learning

我刚刚做了一个基准测试,而Tensorflow优化包中的ExternalOptimizerInterface几乎是普通优化器的两倍。

这让我想知道它的意义是什么。 ExternalOptimizerInterface对于现代深度学习显然是不可行的。反正有加速ExternalOptimizerInterface吗?

这是我的ExternalOptimizer的摘要:

  def _minimize(self, initial_val, loss_grad_func, equality_funcs,
                equality_grad_funcs, inequality_funcs, inequality_grad_funcs,
                step_callback, optimizer_kwargs, packed_bounds=None):
    self.t += 1

    current_val = initial_val
    _, grad = loss_grad_func(current_val)

    delta = - grad * self.learning_rate
    new_val = current_val + delta

    return new_val

1 个答案:

答案 0 :(得分:0)

您没有提到是否要在GPU或CPU上运行它。尽管如此,性能差异还是来自GradientDescentOptimizer使用单个优化内核这一事实。您使用ExternalOptimizerInterface的实现是通过原始操作实现的,而Tensorflow无法跨内核进行优化。

底层内核ApplyGradientDescentOp在这里定义 https://github.com/tensorflow/tensorflow/blob/4aa639c0cbb47f4707f735e0cc80f4c39506d928/tensorflow/core/kernels/training_ops.cc#L423

您可以同时运行两个实现,并使用诸如tf-prof之类的分析器来比较它们