Aan de slagGa gratis aan de slag

Optimaliseren met gradiënten

Je krijgt een verliesfunctie, \(y = x^{2}\), die je wilt minimaliseren. Dat kan door de helling te berekenen met de GradientTape()-operatie bij verschillende waarden van x. Is de helling positief, dan verlaag je het verlies door x te verkleinen. Is de helling negatief, dan verlaag je het verlies door x te vergroten. Zo werkt gradient descent.

The image shows a plot of y equals x squared. It also shows the gradient at x equals -1, x equals 0, and x equals 1.

In de praktijk gebruik je een high-level tensorflow-operatie om gradient descent automatisch uit te voeren. In deze oefening bereken je echter de helling bij x-waarden -1, 1 en 0. De volgende operaties zijn beschikbaar: GradientTape(), multiply(), en Variable().

Deze oefening maakt deel uit van de cursus

Introductie tot TensorFlow in Python

Cursus bekijken

Oefeninstructies

  • Definieer x als een variabele met de beginwaarde x0.
  • Stel de verliesfunctie y gelijk aan x vermenigvuldigd met x. Maak geen gebruik van operator overloading.
  • Laat de functie de gradiënt van y ten opzichte van x retourneren.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

def compute_gradient(x0):
  	# Define x as a variable with an initial value of x0
	x = ____(x0)
	with GradientTape() as tape:
		tape.watch(x)
        # Define y using the multiply operation
		y = ____
    # Return the gradient of y with respect to x
	return tape.gradient(____, ____).numpy()

# Compute and print gradients at x = -1, 1, and 0
print(compute_gradient(-1.0))
print(compute_gradient(1.0))
print(compute_gradient(0.0))
Code bewerken en uitvoeren