Optimizar con gradientes
Se te da una función de pérdida, \(y = x^{2}\), que quieres minimizar. Puedes hacerlo calculando la pendiente mediante la operación GradientTape()
a diferentes valores de x
. Si la pendiente es positiva, puedes disminuir la pérdida bajando x
. Si es negativo, puedes disminuirlo aumentando x
. Así funciona el descenso por gradiente.
En la práctica, utilizarás una operación de alto nivel tensorflow
para realizar el descenso de gradiente automáticamente. En este ejercicio, sin embargo, calcularás la pendiente en x
con valores de -1, 1 y 0. Están disponibles las siguientes operaciones: GradientTape()
, multiply()
, y Variable()
.
Este ejercicio forma parte del curso
Introducción a TensorFlow en Python
Instrucciones de ejercicio
- Define
x
como una variable con el valor inicialx0
. - Establece la función de pérdida,
y
, igual ax
multiplicado porx
. No utilices la sobrecarga del operador. - Configura la función para que devuelva el gradiente de
y
con respecto ax
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
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))