Derin öğrenme projemle TensorFlow'u kullanmaya çalışıyorum.
İşte bu formülde benim degrade güncelleştirmesini uygulamak gerekir:Tensorflow ve Theano'da momentum gradyan güncellemesi farklı mı?
Ben de Theano bu kısmını uygulamaya sahip ve beklenen cevap geldi. Ama TensorFlow'un MomentumOptimizer
'u kullanmaya çalıştığımda, sonuç gerçekten çok kötü. Aralarında ne farklı olduğunu bilmiyorum.
Theano:
TensorFlowdef 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
:
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)
Tek fark bu değildir. OP tarafından kaydedilen formül 't (1)' i momentum terimini ekleyerek w (t) 'yi, tensorflow kodu aslında çıkarır. [Buna göre] (http://sebastianruder.com/optimizing-gradient-descent/) tensorflow kodu daha doğru görünüyor. –