ПочатиПочніть безкоштовно

Оптимізація за допомогою градієнтів

У вас є функція втрат y = x^{2}, яку потрібно мінімізувати. Це можна зробити, обчислюючи нахил за допомогою операції GradientTape() для різних значень x. Якщо нахил додатний, втрати зменшаться, якщо зменшити x. Якщо відʼємний — зменшаться, якщо збільшити x. Саме так працює градієнтний спуск.

На зображенні показано графік y дорівнює x у квадраті. Також показано градієнт при x дорівнює −1, x дорівнює 0 та x дорівнює 1.

На практиці ви використовуватимете високорівневу операцію tensorflow, щоб виконувати градієнтний спуск автоматично. У цій вправі ви обчислите нахил для значень x −1, 1 і 0. Доступні такі операції: GradientTape(), multiply() і Variable().

Ця вправа є частиною курсу

Вступ до TensorFlow на Python

Переглянути курс

Інструкції до вправи

  • Оголосіть x як змінну з початковим значенням x0.
  • Задайте функцію втрат y як x, помножене на x. Не використовуйте перевантаження операторів.
  • Нехай функція повертає градієнт y за x.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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))
Редагувати та запускати код