2016-02-18 17 views
6

Tôi đang cố gắng sử dụng TensorFlow với dự án học tập chuyên sâu của mình.
Ở đây tôi cần thực hiện cập nhật dốc của tôi trong công thức này:Điểm khác biệt về cập nhật gradient động trong Tensorflow và Theano như thế nào?

enter image description here

Tôi cũng đã thực hiện phần này trong Theano, và nó được đưa ra câu trả lời mong đợi. Nhưng khi tôi cố gắng sử dụng số MomentumOptimizer của TensorFlow, kết quả thực sự là xấu. Tôi không biết những gì là khác nhau giữa chúng.

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 

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) 

Trả lời

5

Nếu bạn nhìn vào việc thực hiện các ưu đà trong TensorFlow [link], nó được thực hiện như sau:

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

Như bạn thấy, các công thức có một chút khác biệt. Thuật ngữ động lượng mở rộng theo tỷ lệ học tập sẽ giải quyết sự khác biệt của bạn.

Việc triển khai trình tối ưu hóa đó cũng rất dễ dàng. Mã số kết quả sẽ trông giống như đoạn mã trong Theano mà bạn đã đưa vào.

+0

Nó không phải là sự khác biệt duy nhất. Công thức được đăng bởi OP cập nhật 'w (t)' bằng cách thêm thuật ngữ động lượng '\ alpha v (t-1)', trong khi mã tensorflow thực sự trừ nó. Theo [this] (http://sebastianruder.com/optimizing-gradient-descent/) mã tensorflow có vẻ chính xác hơn. –

Các vấn đề liên quan