我创建了一个估算器并使用估算器将其导出到 SavedModel 文件export_savedmodel()
功能。
出于可重复性的原因,我希望能够重新创建估算器,加载 SavedModel 文件中的变量,然后调用evaluate()
并得到相同的结果。
我认为执行此操作的方法是创建 SessionRunHook 来执行加载并将其传递给中的 hooks 参数evaluate()
,像这样:
class myhook(tf.train.SessionRunHook):
def begin(self):
tf.saved_model.loader.load(tf.get_default_session(), ['serve'], '../best_model/1516075471/')
load_best_model_hook = myhook()
res2 = da_model.evaluate(test_input_fn, hooks=[load_best_model_hook])
但这会产生以下错误:
File "/home/user7891/Code/scratch.py", line 106, in begin
tf.saved_model.loader.load(tf.get_default_session(), ['serve'], '../best_model/1516075471/')
File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/saved_model/loader_impl.py", line 198, in load
with sess.graph.as_default():
AttributeError: 'NoneType' object has no attribute 'graph'
看起来好像没有创建会话begin()
被称为。我无法覆盖after_create_session
因为此时无法修改图表。