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

tf.keras.optimizers.Adadelta

Versión de TensorFlow 1 Ver fuente en GitHub

Optimizador que implementa el algoritmo Adadelta.

Hereda de: Optimizer

La optimización Adadelta es un método de descenso de gradiente estocástico que se basa en la tasa de aprendizaje adaptativo por dimensión para abordar dos inconvenientes:

  • La continua decadencia de las tasas de aprendizaje a lo largo de la formación
  • La necesidad de una tasa de aprendizaje global seleccionada manualmente

Adadelta es una extensión más sólida de Adagrad que adapta las tasas de aprendizaje en función de una ventana móvil de actualizaciones de gradientes, en lugar de acumular todos los gradientes anteriores. De esta manera, Adadelta continúa aprendiendo incluso cuando se han realizado muchas actualizaciones. En comparación con Adagrad, en la versión original de Adadelta no es necesario establecer una tasa de aprendizaje inicial. En esta versión, se puede establecer la tasa de aprendizaje inicial, como en la mayoría de los optimizadores de Keras.

De acuerdo con la sección 4.3 ("Tasas de aprendizaje efectivas"), cerca del final del entrenamiento los tamaños de los pasos convergen a 1, que es efectivamente una tasa de aprendizaje alta que causaría divergencia. Esto ocurre solo cerca del final del entrenamiento ya que los gradientes y los tamaños de los pasos son pequeños, y la constante épsilon en el numerador y denominador domina los gradientes pasados ​​y las actualizaciones de parámetros que convergen la tasa de aprendizaje a 1.

De acuerdo con la sección 4.4 ("Datos de voz"), donde se entrenó una gran red neuronal con 4 capas ocultas en un corpus de datos en inglés de EE. UU., Se usó ADADELTA con 100 réplicas de red. El épsilon usado es 1e-6 con rho = 0.95 que convergió más rápido que ADAGRAD, mediante la siguiente construcción: def init (self, lr = 1.0, rho = 0.95, epsilon = 1e-6, decay = 0., ** kwargs):

learning_rate Un Tensor , un valor de punto flotante o una programación que es un tf.keras.optimizers.schedules.LearningRateSchedule . La tasa de aprendizaje. Para que coincida con la forma exacta en el documento original, utilice 1.0.
rho Un Tensor o un valor de punto flotante. La tasa de decaimiento.
epsilon Un Tensor o un valor de punto flotante. Un épsilon constante utilizado para acondicionar mejor la actualización de graduación.
name Prefijo de nombre opcional para las operaciones creadas al aplicar degradados. El valor predeterminado es "Adadelta" .
**kwargs Argumentos de palabras clave. Se permite ser uno de "clipnorm" o "clipvalue" . "clipnorm" (flotador) "clipnorm" gradientes por norma; "clipvalue" (flotante) "clipvalue" degradados por valor.

Referencia:

name Una cadena no vacía. El nombre que se utilizará para los acumuladores creados para el optimizador.
**kwargs argumentos de palabras clave. Permitido ser { clipnorm , clipvalue , lr , decay }. clipnorm es recortar gradientes por norma; clipvalue son gradientes de recorte por valor, el decay se incluye para compatibilidad con versiones anteriores para permitir el decaimiento inverso en el tiempo de la tasa de aprendizaje. lr se incluye para compatibilidad con versiones anteriores, se recomienda usar learning_rate lugar.

ValueError Si el nombre está mal formado.

iterations Variable. El número de pasos de entrenamiento que ha ejecutado este Optimizador.
weights Devuelve variables de este Optimizador en función del pedido creado.

Métodos

add_slot

Ver fuente

Agregue una nueva variable de ranura para var .

add_weight

Ver fuente

apply_gradients

Ver fuente

Aplicar degradados a las variables.

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

El método suma gradientes de todas las réplicas en presencia de tf.distribute.Strategy de forma predeterminada. Puede agregar gradientes usted 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 pares (gradiente, variable).
name Nombre opcional para la operación devuelta. Por defecto, el nombre pasado al constructor Optimizer .
experimental_aggregate_gradients Ya sea para sumar gradientes de diferentes réplicas en presencia de tf.distribute.Strategy . Si es False, es responsabilidad del usuario agregar los degradados. Predeterminado a Verdadero.

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

Eleva
TypeError Si grads_and_vars tiene un formato incorrecto.
ValueError Si ninguna de las variables tiene gradientes.

from_config

Ver fuente

Crea un optimizador a partir de su configuración.

Este método es el inverso de get_config , capaz de instanciar el mismo optimizador del diccionario de configuración.

Argumentos
config Un diccionario de Python, normalmente el resultado de get_config.
custom_objects Un diccionario de Python que asigna nombres a objetos de Python adicionales que se utilizan para crear este optimizador, como una función utilizada para un hiperparámetro.

Devoluciones
Una instancia de optimizador.

get_config

Ver fuente

Devuelve la configuración del optimizador.

Una configuración de optimizador es un diccionario de Python (serializable) que contiene la configuración de un optimizador. El mismo optimizador se puede reinstalar más tarde (sin ningún estado guardado) desde esta configuración.

Devoluciones
Diccionario de Python.

get_gradients

Ver fuente

Devuelve gradientes de loss con respecto a los params .

Argumentos
loss Tensor de pérdida.
params Lista de variables.

Devoluciones
Lista de tensores de gradiente.

Eleva
ValueError En caso de que no se pueda calcular algún gradiente (por ejemplo, si no se implementa la función de gradiente).

get_slot

Ver fuente