Метод minimize класса Optimizer
Метод minimize применяется для минимизации
функции потерь относительно переменных модели.
Первым параметром передается функция потерь
(или вызываемый объект, возвращающий значение потерь),
вторым - список переменных модели,
по которым вычисляются градиенты.
Метод выполняет вычисление градиентов
и один шаг обновления переменных,
используя внутренний оптимизатор.
Синтаксис
optimizer.minimize(loss, var_list, [tape])
Пример
Давайте создадим простую линейную модель и выполним один шаг минимизации функции потерь:
import tensorflow as tf
tf.random.set_seed(0)
w = tf.Variable([1.0, 2.0, 3.0])
b = tf.Variable(0.0)
def loss_fn():
x = tf.constant([1.0, 2.0, 3.0])
y_true = tf.constant(10.0)
y_pred = tf.reduce_sum(w * x) + b
return tf.square(y_pred - y_true)
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
optimizer.minimize(loss_fn, var_list=[w, b])
print(w)
print(b)
Результат выполнения кода:
<tf.Variable 'Variable:0' shape=(3,) dtype=float32, numpy=array([0.16, 1.32, 2.48], dtype=float32)>
<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=-1.88>
Пример
Давайте выполним несколько шагов минимизации в цикле и посмотрим, как уменьшается значение потерь:
import tensorflow as tf
tf.random.set_seed(0)
w = tf.Variable([1.0, 2.0, 3.0])
b = tf.Variable(0.0)
x = tf.constant([1.0, 2.0, 3.0])
y_true = tf.constant(10.0)
def loss_fn():
y_pred = tf.reduce_sum(w * x) + b
return tf.square(y_pred - y_true)
optimizer = tf.keras.optimizers.SGD(learning_rate=0.001)
for step in range(5):
loss_value = optimizer.minimize(loss_fn, var_list=[w, b])
print("step", step, "loss", loss_fn().numpy())
Результат выполнения кода:
step 0 loss 116.63999
step 1 loss 79.66065
step 2 loss 54.408306
step 3 loss 37.16463
step 4 loss 25.386543
Смотрите также
-
класс
Optimizer,
который является базовым классом для всех оптимизаторов -
метод
apply_gradients,
который применяет готовые градиенты к переменным -
метод
update_step,
который выполняет один шаг обновления переменных -
атрибут
learning_rate,
который задает скорость обучения оптимизатора