Spec-Zone.ru › TensorFlow

tf.compat.v1.train.get_global_step

Получает тензор глобального шага.

tf.compat.v1.train.get_global_step(
    graph=None
)

Переход на TF2

Внимание: Этот API разработан для TensorFlow v1. Продолжайте читать, чтобы узнать, как перейти с этого API на встроенный эквивалент TensorFlow v2. Инструкции по переносу остального кода см. в руководстве по переходу с TensorFlow v1 на TensorFlow v2.

После отказа от глобальных графов TF больше не отслеживает переменные в коллекциях. Другими словами, в TF2 нет глобальных переменных. Поэтому функции глобального шага удалены (get_or_create_global_step, create_global_step, get_global_step) . Для перехода доступны два варианта:

  1. Создайте оптимизатор Keras, который создает переменную iterations. Значение этой переменной автоматически увеличивается при вызове apply_gradients.
  2. Создайте и увеличивайте значение tf.Variable вручную.

Ниже показан пример перехода с глобального шага на оптимизатор Keras:

Определите фиктивную модель и функцию потерь:

def compute_loss(x):
  v = tf.Variable(3.0)
  y = x * v
  loss = x * 5 - x * v
  return loss, [v]

До перехода:

g = tf.Graph()
with g.as_default():
  x = tf.compat.v1.placeholder(tf.float32, [])
  loss, var_list = compute_loss(x)
  global_step = tf.compat.v1.train.get_or_create_global_step()
  global_init = tf.compat.v1.global_variables_initializer()
  optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.1)
  train_op = optimizer.minimize(loss, global_step, var_list)
sess = tf.compat.v1.Session(graph=g)
sess.run(global_init)
print("before training:", sess.run(global_step))
before training: 0
sess.run(train_op, feed_dict={x: 3})
print("after training:", sess.run(global_step))
after training: 1

С использованием get_global_step:

with g.as_default():
  print(sess.run(tf.compat.v1.train.get_global_step()))
1

Переход на оптимизатор Keras:

optimizer = tf.keras.optimizers.SGD(.01)
print("before training:", optimizer.iterations.numpy())
before training: 0
with tf.GradientTape() as tape:
  loss, var_list = compute_loss(3)
  grads = tape.gradient(loss, var_list)
  optimizer.apply_gradients(zip(grads, var_list))
print("after training:", optimizer.iterations.numpy())
after training: 1

Описание

Используется в блокнотах

Используется в руководстве Используется в руководствах
  • Оценщики
  • Примеры перехода: готовые оценщики
  • Переход с ранней остановки
  • Переход с LoggingTensorHook и StopAtStepHook на обратные вызовы Keras
  • Переход с метрик и оптимизаторов
  • Checkpointer и PolicySaver

Тензор глобального шага должен быть целочисленной переменной. Сначала мы пытаемся найти его в коллекции GLOBAL_STEP или по имени global_step:0.

Аргументы
graph Граф, в котором нужно найти глобальный шаг. Если не указан, используется граф по умолчанию.
Возвращает
Переменную глобального шага или None, если она не найдена.
Вызывает исключение
TypeError Если тензор глобального шага имеет нецелочисленный тип или не является Variable.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/get_global_step

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API