假设我已经训练好了一个Tensorflow Estimator:
estimator = tf.contrib.learn.Estimator(
model_fn=model_fn,
model_dir=MODEL_DIR,
config=some_config)
然后我将其适配到一些训练数据中:
estimator.fit(input_fn=input_fn_train, steps=None)
想法是将模型拟合到我的MODEL_DIR。这个文件夹包含一个检查点和几个.meta
和.index
文件。
这非常完美。我想使用我的函数进行一些预测:
estimator = tf.contrib.Estimator(
model_fn=model_fn,
model_dir=MODEL_DIR,
config=some_config)
predictions = estimator.predict(input_fn=input_fn_test)
我的解决方案完美运作,但有一个很大的缺点:你需要知道model_fn,这是我在Python中定义的模型。但如果我在Python代码中添加了一个密集层来改变模型,那么这个模型对于在MODEL_DIR中保存的数据来说是不正确的,导致结果不正确:
NotFoundError (see above for traceback): Key xxxx/dense/kernel not found in checkpoint
我该怎么应对这个问题?我该如何加载我的模型/估算器,以便在一些新数据上进行预测?怎样才能从MODEL_DIR中加载model_fn或estimator?