27 votos

Keras, ¿cómo funciona la decaída de la tasa de aprendizaje de SGD?

Si miras la documentación http://keras.io/optimizers/ hay un parámetro en el SGD para decay. Sé que esto reduce la tasa de aprendizaje con el tiempo. Sin embargo, no puedo entender exactamente cómo funciona. ¿Es un valor que se multiplica por la tasa de aprendizaje como lr = lr * (1 - decay) ¿es exponencial? Además, ¿cómo puedo ver qué tasa de aprendizaje está utilizando mi modelo? Cuando imprimo model.optimizer.lr.get_value() después de ejecutar un ajuste durante unos pocos epochs, me devuelve la tasa de aprendizaje original a pesar de haber establecido el decay.

Además, ¿tengo que establecer nesterov=True para usar momento o hay simplemente dos tipos diferentes de momento que puedo usar? Por ejemplo, ¿tiene sentido hacer esto sgd = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = False)

28voto

Tim Puntos 219

La documentación a la que te refieres incluye una referencia al código fuente de Python (simplemente haz clic en el enlace [Source] en el lugar correspondiente), que se puede utilizar para responder tus preguntas. Aquí está la línea más relevante, mostrando cómo decay modifica la tasa de aprendizaje:

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

La opción nesterov no tiene que establecerse en True para que se use el momentum; resulta en que se use el momentum de una manera diferente, como nuevamente se puede ver en el código fuente:

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

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

1 votos

¿y self.iterations se refiere al número de pasos individuales de SGD, no al número de épocas, verdad?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X