如何在张量流中实现动量算法?为什么我的算法这么慢?

2024-05-18 05:51:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用张量流实现动量算法。但是我的算法在mnist上太慢了。每次迭代都比上次慢。我有一个nvidiatitanxpascal,在tensorflow官方网站上训练演示时速度非常快。所以,这不是GPU的问题。你知道吗

这是我的代码(momentum和modified momentum):

def momentum(loss, t, parameter_list):
opt = GradientDescentOptimizer(1e-3)
grads_and_vars = opt.compute_gradients(loss, parameter_list)
capped_grads_and_vars = []
for i in range(len(grads_and_vars)):
    gradient = grads_and_vars[i][0]
    variable = grads_and_vars[i][1]
    if t != 0:
        momentum = gradient + mu * last_momentum0[i]
        capped_grads_and_vars.append((momentum, variable))
    else:
        momentum = gradient
        capped_grads_and_vars.append((momentum, variable))
if t != 0:
    for i in range(len(grads_and_vars)):
        last_momentum0[i] = capped_grads_and_vars[i][0]
else:
    for i in range(len(grads_and_vars)):
        last_momentum0.append(capped_grads_and_vars[i][0])
return opt.apply_gradients(capped_grads_and_vars)

the time of the session.run(train_step)


Tags: andinforlenrangevarsvariablelast