Nuestro equipo de redactores ha estado largas horas investigando respuestas a tus búsquedas, te compartimos la solución por eso esperamos serte de mucha ayuda.
Ver fuente en GitHub |
Optimizador que implementa el algoritmo de Adam.
Hereda de: Optimizer
Ver alias
Alias principales
Alias de compatibilidad para la migración
Ver Guía de migración para más detalles.
tf.keras.optimizers.Adam( learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False, name='Adam',**kwargs )
La optimización de Adam es un método de descenso de gradiente estocástico que se basa en la estimación adaptativa de momentos de primer y segundo orden.
De acuerdo a Kingma et al., 2014el método es “computacionalmente eficiente, requiere poca memoria, es invariable al cambio de escala diagonal de gradientes y es adecuado para problemas que son grandes en términos de datos/parámetros“.
argumentos | |
---|---|
learning_rate |
A Tensor valor de punto flotante, o un programa que es un tf.keras.optimizers.schedules.LearningRateSchedule , o un invocable que no toma argumentos y devuelve el valor real a usar, la tasa de aprendizaje. El valor predeterminado es 0,001. |
beta_1 |
Un valor flotante o un tensor flotante constante, o un invocable que no toma argumentos y devuelve el valor real para usar. La tasa de caída exponencial para las estimaciones del primer momento. El valor predeterminado es 0.9. |
beta_2 |
Un valor flotante o un tensor flotante constante, o un invocable que no toma argumentos y devuelve el valor real para usar. La tasa de caída exponencial para las estimaciones del segundo momento. El valor predeterminado es 0,999. |
epsilon |
Una pequeña constante para la estabilidad numérica. Este épsilon es “sombrero épsilon” en el artículo de Kingma y Ba (en la fórmula justo antes de la Sección 2.1), no el épsilon en el Algoritmo 1 del artículo. El valor predeterminado es 1e-7. |
amsgrad |
booleano. Si aplicar la variante AMSGrad de este algoritmo del artículo “Sobre la convergencia de Adán y más allá”. Predeterminado a False . |
name |
Nombre opcional para las operaciones creadas al aplicar degradados. Predeterminado a "Adam" . |
**kwargs |
Argumentos de palabras clave. permitido ser uno de "clipnorm" o "clipvalue" . "clipnorm" (flotante) recorta gradientes por norma; "clipvalue" (flotante) recorta degradados por valor. |
Uso:
opt = tf.keras.optimizers.Adam(learning_rate=0.1) var1 = tf.Variable(10.0) loss =lambda:(var1 **2)/2.0# d(loss)/d(var1) == var1 step_count = opt.minimize(loss,[var1]).numpy()# The first step is `-learning_rate*sign(grad)` var1.numpy()9.9
Referencia:
- Kingma et al., 2014
- Reddi et al., 2018 por
amsgrad
.
Notas:
El valor predeterminado de 1e-7 para epsilon podría no ser un buen valor predeterminado en general. Por ejemplo, al entrenar una red Inception en ImageNet, una buena opción actual es 1.0 o 0.1. Tenga en cuenta que, dado que Adam usa la formulación justo antes de la Sección 2.1 del artículo de Kingma y Ba en lugar de la formulación del Algoritmo 1, el “épsilon” al que se hace referencia aquí es “sombrero de épsilon” en el artículo.
La escasa implementación de este algoritmo (utilizado cuando el degradado es un objeto IndexedSlices, generalmente debido a tf.gather
o una búsqueda incrustada en el pase hacia adelante) aplica impulso a los cortes variables incluso si no se usaron en el pase hacia adelante (lo que significa que tienen un gradiente igual a cero). La caída de momento (beta1) también se aplica a todo el acumulador de momento. Esto significa que el comportamiento disperso es equivalente al comportamiento denso (a diferencia de algunas implementaciones de impulso que ignoran el impulso a menos que se haya utilizado una porción variable).
aumenta | |
---|---|
ValueError |
en caso de cualquier argumento inválido. |
Reseñas y valoraciones
Eres capaz de añadir valor a nuestro contenido contribuyendo tu veteranía en las notas.