张量流自定义估算器中的急切执行

Eager execution in tensorflow custom estimators

我正在使用自定义 Estimator 逻辑重写我的代码,我需要启用即时执行以获得我需要的 metrics/predictions。但是,由于某种原因,启用急切执行似乎并没有成功。要重现,我可以使用位于 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.

如何让我的模型急切执行?我正在使用 tensorflow 1.9.0

Estimator API 与图形构造紧密相关(每次调用 train()evaluate() 等都会重建图形)。因此它在调用时明确禁用了急切执行。

您是否可以使用自己的训练循环或使用 tf.keras.Model.fit() 而不是使用 Estimator API?