Optimizadore

Keras-TensorFlow

Nota: Que hace un optimizador de API-Keras, obviamente, optimizar los valores de los parámetros para reducir el error cometido por la Red-Neuronal. El proceso mediante el cual se hace esto se conoce como: Propagación hacia atrás de errores o Retropropagación & Backpropagation es un método común para entrenar Redes-Neuronales-Artificiales .

 

Optimizadores

-. Un Optimizador es uno de los dos argumentos necesarios para compilar un Modelo de APIKeras, usaremos compile() y fit().

-. Empecemos por su configuración, realicemos un reseteo y carguemos las librerías.

Reseteo:

  • In: import tensorflow as tf
  • In: tf.keras.backend.clear_session()

Librerías:

  • In: import tensorflow as tf
  • In: from tensorflow import keras
  • In: from keras import layers

Llamar-Instancia:

  • model = keras.Sequential()
  • model.add(layers.Dense(64, kernel_initializer=‘uniform’, input_shape=(10,)))
  • model.add(layers.Activation(‘softmax’))

Llamar-Optimizador:

  • opt = keras.optimizers.Adam(learning_rate=0.01)
  • model.compile(loss=‘categorical_crossentropy’, optimizer=opt)

Optimizador de identificador de cadena: “Este utiliza los parámetros por defecto del optimizador”.

In: model.compile(loss=‘categorical_crossentropy’, optimizer=‘adam’)

 

Entrenamiento-Personalizado

-. Consideremos un ciclo de EntrenamientoPersonalizado, a través de la instancia tf.GradientTape recuperaría gradientes. Posteriormente llamamos al optimizer.apply_gradients() lo cual actualizar los Pesos.

Crear-Instancia-Optimizador:

  • In: optimizer = tf.keras.optimizers.Adam()

Ejecutemos los Procesos:

  • In: for x, y in dataset:
  • In:       with tf.GradientTape() as tape:
  • In:               logits = model(x)
  • In:               loss_value = loss_fn(y, logits)

Gradientes de Pérdida los pesos:

  • In:       gradients = tape.gradient(loss_value, model.trainable_weights)

Actualizar los Pesos del Modelo:

  • In:       optimizer.apply_gradients(zip(gradients, model.trainable_weights))

Nota: Tenemos que tener en cuenta que este objeto no tenemos in dataset por lo tanto tampoco los loss_fn si los procesamos nos da error.

 

Relación de Optimizadores disponibles:

  • USD
  • RMSprop
  • Adán
  • AdánW
  • Adadelta
  • Adagrado
  • Adamax
  • adafactor
  • Nadam
  • Ftrl

 

API del Optimizador principal:

-. Estos métodos y atributos que estamos usando son comunes a todos los Optimizadores de Keras.

El método apply_gradients :

  • Optimizer.apply_gradients(
  •         grads_and_vars, name=None, skip_gradients_aggregation=False, **kwargs
  • )

Argumentos:

  • grads_and_vars : Lista de “gradient, variable” pares.
  • nombre : cadena, por defecto es Ninguno. El nombre del ámbito de nombres que se usará al crear variables. Si no hay, “self.name” se utilizará.
  • skip_gradients_aggregation : si es verdadero, la agregación de gradientes no se realizará dentro del optimizador. Por lo general, este argumento se establece en True cuando escribe código personalizado agregando gradientes fuera del optimizador.
  • **kwargs : argumentos de palabra clave solo utilizados para compatibilidad con versiones anteriores.

 

Recopilando:

Hemos visto el Optimizador es uno de los dos argumentos para compilar un Modelo de API-Keras.

  • Referencias: (Entorno-Moreluz)
  • Referencias: (Keras)