gpt4 book ai didi

tensorflow - Tensorflow 和 Theano 这样的动量梯度更新有什么不同?

转载 作者:行者123 更新时间:2023-12-03 16:43:25 24 4
gpt4 key购买 nike

我正在尝试在我的深度学习项目中使用 TensorFlow。
这里我需要在这个公式中实现我的梯度更新:

enter image description here

我也在 Theano 中实现了这部分,它得出了预期的答案。但是当我尝试使用 TensorFlow 的 MomentumOptimizer ,结果真的很糟糕。我不知道他们之间有什么不同。

西诺:

def gradient_updates_momentum_L2(cost, params, learning_rate, momentum, weight_cost_strength):
# Make sure momentum is a sane value
assert momentum < 1 and momentum >= 0
# List of update steps for each parameter
updates = []
# Just gradient descent on cost
for param in params:
param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable)
updates.append((param, param - learning_rate*(param_update + weight_cost_strength * param_update)))
updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
return updates

TensorFlow:

l2_loss = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()])
cost = cost + WEIGHT_COST_STRENGTH * l2_loss
train_op = tf.train.MomentumOptimizer(LEARNING_RATE, MOMENTUM).minimize(cost)

最佳答案

如果您查看 TensorFlow [link] 中动量优化器的实现],实现如下:

accum = accum * momentum() + grad;
var -= accum * lr();

如您所见,公式略有不同。按学习率缩放动量项应该可以解决您的差异。

自己实现这样的优化器也很容易。所结果的
代码看起来类似于您包含的 Theano 中的代码段。

关于tensorflow - Tensorflow 和 Theano 这样的动量梯度更新有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com