Aan de slagGa gratis aan de slag

Lokale minima vermijden

In de vorige opgave zag je hoe makkelijk je vastloopt in lokale minima. We hadden een eenvoudig optimalisatieprobleem met één variabele en toch wist gradient descent het globale minimum niet te vinden, omdat het eerst door lokale minima moest. Een manier om dit te vermijden is momentum gebruiken, zodat de optimizer door lokale minima heen kan breken. We gebruiken opnieuw de verliesfunctie uit de vorige opgave, die al is gedefinieerd en beschikbaar is als loss_function().

De grafiek toont een ééndimensionale functie met meerdere lokale minima en één globaal minimum.

Verschillende optimizers in tensorflow hebben een momentumparameter, waaronder SGD en RMSprop. In deze oefening gebruik je RMSprop. Let op: x_1 en x_2 zijn dit keer op dezelfde waarde geïnitialiseerd. Bovendien is keras.optimizers.RMSprop() al voor je geïmporteerd uit tensorflow.

Deze oefening maakt deel uit van de cursus

Introductie tot TensorFlow in Python

Cursus bekijken

Oefeninstructies

  • Stel de bewerking opt_1 in met een learning rate van 0,01 en een momentum van 0,99.
  • Stel opt_2 in op de root mean square propagation (RMS) optimizer met een learning rate van 0,01 en een momentum van 0,00.
  • Definieer de minimalisatiebewerking voor opt_2.
  • Print x_1 en x_2 als numpy-arrays.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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(____, ____)
Code bewerken en uitvoeren