Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.keras.optimizers.Adam

TensorFlow 1 versión Ver código fuente en GitHub

Optimizador que implementa el algoritmo de Adán.

Hereda de: Optimizer

Se utiliza en los cuadernos

Se utiliza en la guía Se utiliza en los tutoriales

optimización de Adán es un método de descenso de gradiente estocástico que se basa en la estimación adaptativa de primer orden y de segundo orden momentos.

Según Kingma et al., 2014 , el método es "computacionalmente eficiente, tiene poca necesidad de memoria, invariante a reescalado diagonal de los gradientes, y es muy adecuado para los problemas que son grandes en términos de datos / parámetros".

learning_rate Un Tensor , valor en puntos, o un horario que es un flotante tf.keras.optimizers.schedules.LearningRateSchedule , o una invocable que no tiene argumentos y devuelve el valor real de uso, la tasa de aprendizaje. El valor predeterminado es 0.001.
beta_1 Un valor flotante o un tensor constante float, o una exigible que no toma argumentos y devuelve el valor real para su uso. La tasa de decaimiento exponencial para el 1er estimaciones momento. El valor predeterminado es 0,9.
beta_2 Un valor flotante o un tensor constante flotador, o una invocable que no tiene argumentos y devuelve el valor real de uso, la tasa de decaimiento exponencial para la 2ª estimaciones momento. El valor predeterminado es 0.999.
epsilon Una pequeña constante para la estabilidad numérica. Este epsilon es "sombrero epsilon" en el papel Kingma y Ba (en la fórmula justo antes de la Sección 2.1), no el epsilon en el algoritmo 1 del papel. Valores predeterminados a 1E-7.
amsgrad Boole. Si se debe aplicar la variante AMSGrad de este algoritmo a partir del papel "en la convergencia de Adán y más allá". El valor predeterminado es False .
name nombre opcional para las operaciones creado al aplicar gradientes. Por defecto es "Adam" .
**kwargs argumentos de palabra clave. Permitido ser uno de "clipnorm" o "clipvalue" . "clipnorm" clips gradientes por norma (float); "clipvalue" (float) Clips gradientes 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:

notas:

El valor por defecto de 1e-7 para épsilon podría no ser un buen valor por defecto en general. Por ejemplo, cuando la formación de una red de creación el IMAGEnet una opción buena actual es 1.0 o 0.1. Tenga en cuenta que desde que Adán utiliza la formulación justo antes de la sección 2.1 del documento Kingma y Ba en lugar de la formulación en el algoritmo 1, el "épsilon" hace referencia aquí es "sombrero épsilon" en el papel.

La implementación de este algoritmo escasa (se utiliza cuando el gradiente es un IndexedSlices objeto, típicamente debido a tf.gather o un incrustación de búsqueda en el pase hacia adelante) no aplicar impulso para rebanadas variables, incluso si no se utilizaron en el pase hacia adelante (lo que significa que tener un gradiente igual a cero). decaimiento Momentum (beta1) también se aplica a todo el acumulador de impulso. Esto significa que el comportamiento escasa es equivalente al comportamiento densa (en contraste con algunas implementaciones de impulso que ignoran el impulso a no ser que una rebanada variables se utilizó en realidad).

name Una cadena no vacía. El nombre que se utilizará para acumuladores creados para el optimizador.
**kwargs argumentos de palabra clave. Permitido ser { clipnorm , clipvalue , lr , decay }. clipnorm es gradientes de clip por norma; clipvalue es gradientes de clip de valor, decay se incluye por compatibilidad hacia atrás para permitir que la decadencia de tiempo dependiente de la tasa de aprendizaje. lr se incluye para la compatibilidad con versiones anteriores, recomienda el uso de learning_rate lugar.

ValueError Si está mal formado nombre.

iterations Variable. El número de los pasos de formación de este optimizador se ha ejecutado.
weights Devoluciones variables de este optimizador basado en el orden creado.

Métodos

add_slot

Ver fuente

Agregar una nueva variable ranura para var .

add_weight

Ver fuente

apply_gradients

Ver fuente

Aplicar gradientes a las variables.

Esta es la segunda parte de minimize() . Devuelve una Operation que se aplica gradientes.

El método resume gradientes de todas las réplicas en presencia de tf.distribute.Strategy por defecto. Puede agregarse gradientes mismo pasando experimental_aggregate_gradients=False .

Ejemplo:

 grads = tape.gradient(loss, vars)
grads = tf.distribute.get_replica_context().all_reduce('sum', grads)
# Processing aggregated gradients.
optimizer.apply_gradients(zip(grads, vars),
    experimental_aggregate_gradients=False)

 

args
grads_and_vars Lista de (gradiente, variables) pares.
name nombre opcional para la operación devuelto. Por defecto al nombre pasa al Optimizer constructor.
experimental_aggregate_gradients Ya sea para resumir los gradientes de diferentes réplicas en el presense de tf.distribute.Strategy . Si es falso, es responsabilidad de los usuarios agregar los gradientes. Por defecto en True.

Devoluciones
Una Operation que aplica los gradientes especificados. Las iterations se incrementarán automáticamente por 1.

aumentos
TypeError Si grads_and_vars está mal formado.
ValueError Si ninguna de las variables tiene gradientes.

from_config

Ver fuente

Crea un optimizador de su configuración.

Este método es el reverso de get_config , capaz de crear instancias de la misma optimizador del diccionario config.

argumentos
config Un diccionario de Python, normalmente la salida de GET_CONFIG.
custom_objects Un pitón nombres diccionario de mapeo a Python adicional objetos utilizados para crear esta optimizador, como una función que se utiliza para un hiperparámetro.

Devoluciones
Una instancia optimizador.

get_config

Ver fuente

Devuelve la configuración del optimizador.

Un config optimizador es un diccionario Python (serializable) que contiene la configuración de un optimizador. El mismo optimizador puede reinstantiated después (sin ningún estado guardado) a partir de esta configuración.

Devoluciones
diccionario de Python.

get_gradients

Ver fuente

Devuelve gradientes de loss con respecto al params .

argumentos
loss tensor de la pérdida.
params Lista de variables.

Devoluciones
Lista de los tensores de gradiente.

aumentos
ValueError En caso de que cualquier gradiente no se puede calcular (por ejemplo, si la función de gradiente no implementado).

get_slot

Ver fuente

get_slot_names

Ver fuente

Una lista de los nombres de las ranuras de este optimizador.

get_updates

Ver fuente

get_weights