TensorFlow报错:ValueError The passed save_path is not a valid checkpoint

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow报错:ValueError The passed save_path is not a valid checkpoint相关的知识,希望对你有一定的参考价值。

报错

错误是由于在测试的过程中导入checkpoint时,传入的save_path是无效的,或者是说,传入的save_path在给定的路径中没有找到对应的文件。

self.saver.restore(sess, checkpoint.model_checkpoint_path)

原因

Tensorflow会将模型保存生成四个文件,如下图所示。

  • 图a的情况是模型保存时,仅传入了地址,而地址中不包含文件的名称。在这种情况下,checkpoint_dir可以直接作为路径传入模型恢复save.restore()的函数中。
  • 图b的情况是模型保存时,地址中添加了需要保存文件的名称filename,并且在save声明时,使用了max_to_keep=1的设置,即保存的文件名称中,在XXX.ckpt后包含 “-1” 的名称,其表示当前保存模型的训练代数。在这种情况下,使用当前的checkpoint_dir作为模型恢复saver.restore()函数中的路径,将会报错。

在编写时,如果使用的是save = tf.train.Saver() 使用了max_to_keep=1的设置,并且在模型训练保存的过程中,是每训练一代保存一次。 此时,checkpoint_dir将不再适用于save.restore(sess, checkpoint_dir)中的checkpoint_dir。因为从图b中可以看到,其包含-1(训练代数的后缀)。如果仍将checkpoint_dir作为模型参数读入的地址传入save.restore()中,将会报错。

ValueError: The passed save_path is not a valid checkpoint

解决方法

使用tf.train.latest_checkpoint()函数,将不包含文件名称的路径传入函数中,获取到文件的路径module_file,并将其传入saver.restore()中,便可以解决上述问题。

module_file = tf.train.latest_checkpoint(diag_obj.save_path)
saver.restore(sess, module_file) 

以上是关于TensorFlow报错:ValueError The passed save_path is not a valid checkpoint的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow报错:ValueError The passed save_path is not a valid checkpoint

TensorFlow报错:ValueError The passed save_path is not a valid checkpoint

tensorflow读取jpg格式图片报错 ValueError: Only know how to handle extensions: ['png']; with Pillow i

ValueError: too many values to unpack tensorflow

尝试在 TensorFlow 中微调 GPT-2 模型时出现 ValueError

Tensorflow+keras解决Exception has occurred: ValueError Shape mismatch: The shape of labels (received(代