Стремительное выполнение в пользовательских оценках тензорного потока

Я переписываю свой код, используя настраиваемую логику оценщика, и мне нужно включить активное выполнение, чтобы получить нужные мне показатели / прогнозы. Однако похоже, что включение активного выполнения по какой-то причине не выполняется. Для воспроизведения я могу использовать пример, расположенный по адресу https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/learn/iris.py с некоторыми отпечатками:

...
import tensorflow as tf
tf.enable_eager_execution()
...
def my_model(features, labels, mode):
  print("IS EAGER? (my_model) - {}".format(tf.executing_eagerly()))
...
print("IS EAGER? - {}".format(tf.executing_eagerly()))
classifier = tf.estimator.Estimator(model_fn=my_model)

Когда я запускаю скрипт, получается следующее:

IS EAGER? - True
INFO:tensorflow:Using default config.
...
INFO:tensorflow:Calling model_fn.
IS EAGER? (my_model) - False
INFO:tensorflow:Done calling model_fn.

Как добиться того, чтобы моя модель работала без промедления? Я использую тензорный поток 1.9.0


person Vilmar    schedule 31.07.2018    source источник


Ответы (1)


Estimator API довольно сильно привязан к построению графа (каждый вызов train(), evaluate() и т. Д. Восстанавливает граф). Таким образом, он явно отключает активное выполнение при вызове.

Можно ли использовать собственный цикл обучения или использовать tf.keras.Model.fit() вместо Estimator API?

person ash    schedule 01.08.2018
comment
Да, думаю, мне нужно будет найти обходной путь, я просто подумал, что есть способ сделать это и с помощью Оценщиков. Я, вероятно, выберу свой собственный цикл с метриками, измеряемыми вне нескольких train() вызовов для каждой «эпохи» обучения. - person Vilmar; 01.08.2018