IniziaInizia gratis

Evitare i minimi locali

Nel problema precedente hai visto quanto sia facile rimanere bloccati in minimi locali. Avevamo un semplice problema di ottimizzazione in una variabile e il gradient descent non è comunque riuscito a trovare il minimo globale perché prima doveva attraversare minimi locali. Un modo per evitare questo problema è usare il momentum, che permette all'ottimizzatore di superare i minimi locali. Useremo di nuovo la funzione di perdita del problema precedente, che è stata definita ed è disponibile come loss_function().

Il grafico mostra una funzione in una variabile con diversi minimi locali e un minimo globale.

Diversi ottimizzatori in tensorflow hanno un parametro di momentum, tra cui SGD e RMSprop. In questo esercizio userai RMSprop. Nota che questa volta x_1 e x_2 sono stati inizializzati allo stesso valore. Inoltre, keras.optimizers.RMSprop() è già stato importato per te da tensorflow.

Questo esercizio fa parte del corso

Introduzione a TensorFlow in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Imposta l'operazione opt_1 con un learning rate di 0.01 e un momentum di 0.99.
  • Imposta opt_2 per usare l'ottimizzatore RMS (root mean square propagation) con un learning rate di 0.01 e un momentum di 0.00.
  • Definisci l'operazione di minimizzazione per opt_2.
  • Stampa x_1 e x_2 come array numpy.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Initialize x_1 and x_2
x_1 = Variable(0.05,float32)
x_2 = Variable(0.05,float32)

# Define the optimization operation for opt_1 and opt_2
opt_1 = keras.optimizers.RMSprop(learning_rate=____, momentum=____)
opt_2 = ____

for j in range(100):
	opt_1.minimize(lambda: loss_function(x_1), var_list=[x_1])
    # Define the minimization operation for opt_2
	____

# Print x_1 and x_2 as numpy arrays
print(____, ____)
Modifica ed esegui il codice