Атрибут iterations
Атрибут iterations класса Optimizer возвращает количество шагов обновления весов, которые выполнил оптимизатор. Значение атрибута увеличивается на единицу при каждом вызове метода apply_gradients или minimize. Атрибут доступен только для чтения и представляет собой тензор целочисленного типа. Его удобно использовать для отслеживания прогресса обучения, расписаний скорости обучения и логирования.
Синтаксис
optimizer.iterations
Пример
Давайте создадим оптимизатор и посмотрим на начальное значение атрибута iterations:
import tensorflow as tf
optimizer = tf.keras.optimizers.SGD(learning_rate=0.1)
print(optimizer.iterations)
Результат выполнения кода:
<tf.Variable 'SGD/iterations:0' shape=() dtype=int64, numpy=0>
Пример
Давайте выполним несколько шагов обновления весов и убедимся, что атрибут iterations увеличивается:
import tensorflow as tf
t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0])
optimizer = tf.keras.optimizers.SGD(learning_rate=0.1)
for _ in range(3):
grads = tf.constant([0.1, 0.1, 0.1, 0.1, 0.1])
optimizer.apply_gradients(zip([grads], [t]))
print(optimizer.iterations.numpy())
Результат выполнения кода:
1
2
3
Пример
Давайте используем атрибут iterations для изменения скорости обучения в зависимости от прогресса:
import tensorflow as tf
t = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0])
optimizer = tf.keras.optimizers.SGD(learning_rate=0.1)
for _ in range(3):
grads = tf.constant([0.1, 0.1, 0.1, 0.1, 0.1])
optimizer.apply_gradients(zip([grads], [t]))
step = optimizer.iterations.numpy()
new_lr = 0.1 / (1.0 + 0.5 * step)
optimizer.learning_rate.assign(new_lr)
print(f"step={step}, lr={new_lr:.4f}")
Результат выполнения кода:
step=1, lr=0.0667
step=2, lr=0.0500
step=3, lr=0.0400
Смотрите также
-
класс
Optimizer,
который управляет обновлением весов модели -
метод
apply_gradients,
который применяет градиенты к переменным -
метод
minimize,
который выполняет шаг оптимизации функции потерь -
атрибут
learning_rate,
который задает скорость обучения оптимизатора