我刚刚做了一个基准测试,而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
答案 0 :(得分:0)
您没有提到是否要在GPU或CPU上运行它。尽管如此,性能差异还是来自GradientDescentOptimizer
使用单个优化内核这一事实。您使用ExternalOptimizerInterface
的实现是通过原始操作实现的,而Tensorflow无法跨内核进行优化。
底层内核ApplyGradientDescentOp
在这里定义
https://github.com/tensorflow/tensorflow/blob/4aa639c0cbb47f4707f735e0cc80f4c39506d928/tensorflow/core/kernels/training_ops.cc#L423)
您可以同时运行两个实现,并使用诸如tf-prof之类的分析器来比较它们