Pet*_*ang 6 momentum gradient-descent tensorflow
我正在尝试将TensorFlow用于我的深度学习项目.
在这里,我需要在此公式中实现渐变更新:
我也在Theano中实现了这个部分,它得出了预期的答案.但是当我尝试使用TensorFlow时MomentumOptimizer,结果非常糟糕.我不知道他们之间有什么不同.
Theano:
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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
如果你看一下TensorFlow [ link ] 中动量优化器的实现,它实现如下:
accum = accum * momentum() + grad;
var -= accum * lr();
Run Code Online (Sandbox Code Playgroud)
如你所见,公式有点不同.按学习率调整动量项可以解决您的差异.
自己实现这样的优化器也很容易.生成的代码看起来类似于您包含的Theano片段.
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |