Otimização com gradientes
Você recebe uma função de perda, \(y = x^{2}\), que deseja minimizar. Você pode fazer isso calculando a inclinação usando a operação GradientTape()
em diferentes valores de x
. Se a inclinação for positiva, você poderá reduzir a perda diminuindo x
. Se for negativo, você pode reduzi-lo aumentando x
. É assim que funciona a descida do gradiente.
Na prática, você usará uma operação de alto nível no site tensorflow
para realizar a descida do gradiente automaticamente. Neste exercício, no entanto, você calculará a inclinação em x
valores de -1, 1 e 0. As seguintes operações estão disponíveis: GradientTape()
, multiply()
, e Variable()
.
Este exercício faz parte do curso
Introdução ao TensorFlow em Python
Instruções de exercício
- Defina
x
como uma variável com o valor inicialx0
. - Defina a função de perda,
y
, igual ax
multiplicado porx
. Não faça uso de sobrecarga do operador. - Defina a função para retornar o gradiente de
y
com relação ax
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
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))