Ottimizzazione con i gradienti
Ti viene data una funzione di perdita, \(y = x^{2}\), che vuoi minimizzare. Puoi farlo calcolando la pendenza usando l'operazione GradientTape() a diversi valori di x. Se la pendenza è positiva, puoi ridurre la perdita diminuendo x. Se è negativa, puoi ridurla aumentando x. Questo è il funzionamento del gradient descent.

Nella pratica, userai un'operazione di alto livello di tensorflow per eseguire automaticamente il gradient descent. In questo esercizio, però, calcolerai la pendenza ai valori di x -1, 1 e 0. Sono disponibili le seguenti operazioni: GradientTape(), multiply(), e Variable().
Questo esercizio fa parte del corso
Introduzione a TensorFlow in Python
Istruzioni dell'esercizio
- Definisci
xcome variabile con valore inizialex0. - Imposta la funzione di perdita,
y, uguale axmoltiplicato perx. Non usare l'operator overloading. - Fai in modo che la funzione restituisca il gradiente di
yrispetto ax.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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))