#tensorflow2.0
#tensorflow2.0
Вопрос:
Похоже, что global_step отсутствует в TensorFlow 2.0.
У меня есть несколько обратных вызовов, которые заинтересованы в текущем прогрессе обучения, и я не уверен, нужно ли мне внедрять свой собственный счетчик шагов или вместо этого зависеть от количества эпох…
Какие-либо рекомендации по замене?
Ответ №1:
Прямо сейчас лучше объявить наш собственный global_step = tf.Variable(1, name="global_step")
и использовать его вручную.
Если посмотреть на документацию, то там нет встроенной замены для tf.train.get_or_create_global_step
, и единственная часть документации, которая касается step
, — это экспериментальный раздел tf.summary
модуля: https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/summary/experimental
Ответ №2:
Работает в TensorFlow 2.3.1 и его Keras API.
Экземпляры tf.keras.optimizers.Optimizer
наследуют iterations
свойство. Реализация показывает, что это счетчик, который увеличивается после каждого шага обучения. Получите доступ к нему из оптимизатора перед компиляцией модели.
import tensorflow as tf
tf.compat.v1.disable_eager_execution() # see note
optimizer = tf.keras.optimizers.Adam()
training_step = optimizer.iterations
model = Model(inputs,outputs)
model.compile(
loss=my_adaptive_loss_function(training_step),
optimizer=optimizer)
Примечание: В моей настройке мне пришлось отключить быстрое выполнение, чтобы использовать эту переменную, иначе я получил следующее TypeError
. Возможно, вам удастся избежать этого, если ваша реализация менее запутанная, чем моя.
Ошибка типа: передается операция вне кода построения функции тензор "Графика". Возможно иметь тензоры графов утечка из контекста построения функции путем включения tf.init_scope в коде построения вашей функции. Например, следующая функция завершится ошибкой: @tf.function в def есть функция_init_scope(): my_constant = tf.constant(1.) с помощью tf.init_scope(): добавлено = my_constant * 2 Тензор графика имеет имя: pulse_features:0 Во время обработки вышеупомянутого исключения возникло другое исключение: