首页 > 解决方案 > 使用 tensorflow 2.2 加载 TensorFlow 检查点失败,兼容性信息?

问题描述

我一直在使用 tensorflow Estimator API 来训练模型。我以这种方式保存和加载检查点:

estimator=tf.keras.estimator.model_to_estimator(keras_model=keras_model, model_dir=checkpoints_dir)

estimator.train  ...

estimator.predict ...

这工作正常,我一直在保存检查点文件,如下所示:

model.ckpt.data-00000-of-000001
model.ckpt.index
model.ckpt.meta

但是,我尝试使用 tensorflow 2.2(在 google colab 上)加载使用 tensorflow 1.15 版本创建的检查点,现在我收到一条错误消息。检查点文件是否与 tensorflow 1.15 向前兼容?我应该导出“SavedModel”吗?我想为 google colab notebook 分发一个检查点文件。

我真的不明白 Tensorflow 文档中的检查点兼容性如何在版本之间工作。有什么帮助吗?

错误信息是:

NotFoundError:在检查点 [[{{node save/RestoreV2}}]] 中找不到密钥 estimator_global_step/.ATTRIBUTES/VARIABLE_VALUE

在处理上述异常的过程中,又出现了一个异常:

NotFoundError Traceback (最近一次调用最后) NotFoundError: Key estimator_global_step/.ATTRIBUTES/VARIABLE_VALUE not found in checkpoint [[node save/RestoreV2 (定义在/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator /keras.py:332) ]]

在处理上述异常的过程中,又出现了一个异常:

RuntimeError Traceback(最近一次调用最后一次) RuntimeError: Key _CHECKPOINTABLE_OBJECT_GRAPH not found in checkpoint

在处理上述异常的过程中,又出现了一个异常:

NotFoundError Traceback(最近一次调用最后一次) NotFoundError: Key _CHECKPOINTABLE_OBJECT_GRAPH not found in checkpoint

在处理上述异常的过程中,又出现了一个异常:

NotFoundError Traceback (最近一次调用最后一次) /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/saver.py in restore(self, sess, save_path) 1313 # 一个有用的消息 (b/110263146 ) 1314 raise _wrap_restore_error_with_msg( -> 1315 err, "a Variable name or other graph key that is missing") 1316 1317 # 这是一个基于对象的检查点。我们将打印一个警告,然后执行

NotFoundError:从检查点恢复失败。这很可能是由于检查点中缺少变量名称或其他图形键。请确保您没有根据检查点更改预期的图表。原始错误:

在检查点中找不到键 estimator_global_step/.ATTRIBUTES/VARIABLE_VALUE [[node save/RestoreV2 (定义在 /usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/keras.py:332)]]

如果我像以下消息一样更改 tensorflow 版本,一切正常。

注意:当前的 TensorFlow 版本是 2.2.0-rc1。要改用 TF 1.x,请重新启动运行时 (Ctrl+M .) 并在运行“import tensorflow”之前运行“%tensorflow_version 1.x”。

标签: tensorflowtensorflow2.0

解决方案


推荐阅读