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

tf.compat.v1.train.Optimizer

Ver código fuente en GitHub

Clase base para los optimizadores.

Esta clase define la API para añadir Operaciones para entrenar un modelo. Nunca utilice esta clase directamente, pero una vez instantiate de sus subclases, tales como GradientDescentOptimizer , AdagradOptimizer o MomentumOptimizer .

Uso

 # Create an optimizer with the desired parameters.
opt = GradientDescentOptimizer(learning_rate=0.1)
# Add Ops to the graph to minimize a cost by updating a list of variables.
# "cost" is a Tensor, and the list of variables contains tf.Variable
# objects.
opt_op = opt.minimize(cost, var_list=<list of variables>)
 

En el programa de formación que sólo tendrá que ejecutar el Op devuelto.

 # Execute opt_op to do one step of training:
opt_op.run()
 

El procesamiento de los gradientes antes de aplicarlos.

Llamar a minimize() se encarga de tanto el cálculo de los gradientes y su aplicación a las variables. Si desea procesar los gradientes antes de aplicarlos en su lugar puede utilizar el optimizador en tres pasos:

  1. Calcular los gradientes con compute_gradients() .
  2. Procesar los gradientes como desee.
  3. Aplicar los gradientes procesadas con apply_gradients() .

Ejemplo:

 # Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)

# Compute the gradients for a list of variables.
grads_and_vars = opt.compute_gradients(loss, <list of variables>)

# grads_and_vars is a list of tuples (gradient, variable).  Do whatever you
# need to the 'gradient' part, for example cap them, etc.
capped_grads_and_vars = [(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]

# Ask the optimizer to apply the capped gradients.
opt.apply_gradients(capped_grads_and_vars)
 

Los gradientes de apertura de puerta

Tanto minimize() y compute_gradients() acepta un gate_gradients argumento de que controla el grado de paralelismo durante la aplicación de los gradientes.

Los valores posibles son: GATE_NONE , GATE_OP y GATE_GRAPH .

GATE_NONE : Calcular y aplicar gradientes en paralelo. Esto proporciona el máximo de paralelismo en la ejecución, a costa de algunos no reproducibilidad en los resultados. Por ejemplo los dos gradientes de matmul dependen de los valores de entrada: Con GATE_NONE uno de los gradientes se podría aplicar a una de las entradas antes que el otro gradiente se calcula resultando en resultados no reproducibles.

GATE_OP : Para cada Op, asegúrese de que todos los gradientes se calculan antes de ser utilizados. Esto evita que las condiciones de carrera para Operaciones que generan gradientes de múltiples entradas, donde los gradientes dependen de las aportaciones.

GATE_GRAPH : Asegúrese de que todos los gradientes de todas las variables se calculan antes de utilizar cualquiera de ellos. Esto proporciona al menos el paralelismo, pero puede ser útil si desea procesar todos los gradientes antes de aplicar cualquiera de ellos.

ranuras

Algunas subclases optimizador, como MomentumOptimizer y AdagradOptimizer asignar y gestionar las variables adicionales asociados con las variables para entrenar. Estos se llaman ranuras. Las ranuras tienen nombres y se puede pedir al optimizador para los nombres de las ranuras que utiliza. Una vez que tenga un nombre de ranura puede pedir al optimizador para la variable que crea para contener el valor ranura.

Esto puede ser útil si desea iniciar la sesión de depuración de un algoritmo de entrenamiento, las estadísticas del informe sobre las ranuras, etc.

use_locking Bool. Si se aplica Verdadero utilizar bloqueos para evitar actualizaciones simultáneas a las variables.
name Una cadena no vacía. El nombre que se utilizará para acumuladores creados para el optimizador.

ValueError Si está mal formado nombre.

Métodos

apply_gradients

Ver fuente

Aplicar gradientes a las variables.

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

args
grads_and_vars Lista de (gradiente, variables) pares como devuelto por compute_gradients() .
global_step Opcional Variable a la subasta por uno después de las variables han sido actualizados.
name nombre opcional para la operación devuelto. Por defecto al nombre pasa al Optimizer constructor.

Devoluciones
Una Operation que aplica los gradientes especificados. Si global_step no había ninguno, esa operación también incrementa global_step .

aumentos
TypeError Si grads_and_vars está mal formado.
ValueError Si ninguna de las variables tiene gradientes.
RuntimeError Si debe usar _distributed_apply() en su lugar.

compute_gradients

Ver fuente

Calcular los gradientes de loss para las variables en var_list .

Esta es la primera parte de minimize() . Se devuelve una lista de pares (gradiente, variables) donde "gradiente" es el gradiente de "variable". Tenga en cuenta que "gradiente" puede ser un Tensor , un IndexedSlices , o None si no hay un gradiente de la variable dada.

args
loss Un tensor que contiene el valor para minimizar o una toma exigible no hay argumentos que devuelve el valor para reducir al mínimo. Cuando está habilitada la ejecución ansiosos que debe ser un exigible.
var_list Lista opcional o tupla de tf.Variable para actualizar para minimizar loss . El valor predeterminado es la lista de variables recogidas en el gráfico en la clave GraphKeys.TRAINABLE_VARIABLES .
gate_gradients Cómo puerta el cálculo de los gradientes. Puede ser GATE_NONE , GATE_OP o GATE_GRAPH .
aggregation_method Especifica el método usado para combinar términos de gradiente. Los valores válidos están definidos en la clase AggregationMethod .
colocate_gradients_with_ops Si es verdad, tratar implantación común de gradientes con el correspondiente op.
grad_loss Opcional. A Tensor que sostiene el gradiente calculado para loss .

Devoluciones
Una lista de (gradiente, variables) pares. Variable está siempre presente, pero gradiente puede ser None .

aumentos
TypeError Si var_list contiene nada más que Variable objetos.
ValueError Si algunos argumentos no son válidos.
RuntimeError Si se llama con la ejecución ansiosos habilitado y loss no es exigible.

Compatibilidad ansiosos

Cuando está habilitada la ejecución ansiosos, gate_gradients , aggregation_method y colocate_gradients_with_ops se ignoran.

get_name

Ver fuente

get_slot

Ver fuente

Devolver una llamada ranura name creado para var por el optimizador.

Algunos Optimizer subclases utilizan variables adicionales. Por ejemplo Momentum y Adagrad variables de uso a las actualizaciones se acumulan. Este método permite el acceso a estas Variable objetos si por alguna razón que los necesite.

Use get_slot_names() para obtener la lista de los nombres de las ranuras creadas por el Optimizer .

args
var Una variable pasa a minimize() o apply_gradients() .
name Una cuerda.

Devoluciones
La Variable de la ranura si se creó, None otra cosa.

get_slot_names

Ver fuente

Devolverá una lista de los nombres de ranuras creadas por el Optimizer .

Ver get_slot() .

Devoluciones
Una lista de cadenas.

minimize

Ver fuente

Añadir operaciones para minimizar loss de actualización var_list .

Este método simplemente combina llamadas compute_gradients() y apply_gradients() . Si desea procesar el gradiente antes de aplicar los llamamos