Keras, SGD öğrenme hızı azalması nasıl çalışır?


23

Http://keras.io/optimizers/ belgelerine bakarsanız , SGD'de bozulma için bir parametre vardır. Bunun zamanla öğrenme oranını düşürdüğünü biliyorum. Ancak tam olarak nasıl çalıştığını çözemiyorum. lr = lr * (1 - decay) Üstel olduğu gibi öğrenme oranı ile çarpılan bir değer mi? Ayrıca modelimin hangi öğrenme hızını kullandığını nasıl görebilirim? model.optimizer.lr.get_value()Birkaç çağa uyum sağladıktan sonra yazdırdığımda , çürümeyi ayarladığım halde orijinal öğrenme oranını geri veriyor.

Ayrıca, momentum kullanmak için nesterov = True ayarını yapmalı mıyım veya kullanabileceğim sadece iki farklı momentum türü var mı? Mesela bunu yapmak için bir nokta varsgd = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = False)

Yanıtlar:


24

Bahsettiğiniz belgeler Python kaynağına bir referans içerir ( [Source]uygun yerdeki bağlantıya tıklamanız yeterli ), sorularınızı yanıtlamak için kullanılabilir. İşte decayöğrenme oranını nasıl değiştirdiğini gösteren en alakalı satır :

lr = self.lr * (1. / (1. + self.decay * self.iterations))

Kullanılacak nesterovmomentum için seçeneğin True (Doğru) olarak ayarlanması gerekmez; momentumun farklı bir şekilde kullanılmasıyla sonuçlanır, kaynaktan tekrar görülebileceği gibi:

v = self.momentum * m - lr * g  # velocity

if self.nesterov:
    new_p = p + self.momentum * v - lr * g
else:
    new_p = p + v

1
ve self.iterationsmünferit SGD adımlarının sayısıdır, çağların sayısı değil.
guillefix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.