【问题标题】:tensorflow - cannot restore model - "Couldn't match files for checkpoint"tensorflow - 无法恢复模型 - “无法匹配检查点的文件”
【发布时间】:2017-10-09 17:53:48
【问题描述】:

这是我保存到磁盘的模型:

import tensorflow as tf
import numpy as np


BATCH_SIZE = 3
VECTOR_SIZE = 1
LEARNING_RATE = 0.1

x = tf.placeholder(tf.float32, [BATCH_SIZE, VECTOR_SIZE],
                   name='input_placeholder')
y = tf.placeholder(tf.float32, [BATCH_SIZE, VECTOR_SIZE],
                   name='labels_placeholder')

W = tf.get_variable('W', [VECTOR_SIZE, BATCH_SIZE])
b = tf.get_variable('b', [VECTOR_SIZE], initializer=tf.constant_initializer(0.0))

y_hat = tf.matmul(W, x) + b
predict = tf.add(tf.matmul(W, x), b, name='predict')
total_loss = tf.reduce_mean(y-y_hat)
train_step = tf.train.AdagradOptimizer(LEARNING_RATE).minimize(total_loss)
X = np.ones([BATCH_SIZE, VECTOR_SIZE])
Y = np.ones([BATCH_SIZE, VECTOR_SIZE])
all_saver = tf.train.Saver() 

sess= tf.Session()
sess.run(tf.global_variables_initializer())
sess.run([train_step], feed_dict = {x: X, y:Y})
save_path = r'C:\tmp\tmp\\'
all_saver.save(sess,save_path)

在尝试恢复时

checkpoint_path = r'C:\tmp\tmp\\'
tf.train.latest_checkpoint(checkpoint_path)

我收到以下错误消息:

ERROR:tensorflow:Couldn't match files for checkpoint C:\tmp\tmp\\

C:\tmp\tmp\我有以下文件:

.data-00000-of-00001
.index
.meta
checkpoint

有什么想法吗?

【问题讨论】:

    标签: tensorflow save restore


    【解决方案1】:

    来自 saver.save tensorflow api:

    保存路径:字符串。检查点文件名的路径。如果 saver 是分片的,这是分片检查点文件名的前缀。

    save_path 中您没有指定检查点文件名。

    为了将来的使用,请尝试设置: checkpoint_path = r'C:\tmp\tmp\my-model'.

    如果要加载之前保存的模型,请执行以下操作:

    1. 为这些文件添加字符串 my-model
    .data-00000-of-00001
    .index
    .meta
    
    1. 修改checkpoint 文件,使其指向您的检查点:
    model_checkpoint_path: "C:\tmp\tmp\my-model"
    all_model_checkpoint_paths: "C:\tmp\tmp\my-model"
    

    现在应该可以加载检查点了。

    【讨论】:

      【解决方案2】:

      文件只是命名为那一行吗?从点开始?

      如果是这种情况,您应该考虑以不同的方式保存它们,因为这可能是问题所在。

      尝试:

      NUMBER_OF_CKPT = 60 saver.save(sess,save_path,global_step=NUMBER_OF_CKPT)

      通常所做的是将 global_step 也保存为 ckpt 的编号。

      希望已经解决了!

      【讨论】:

      • 您的解决方案可能有效。我所做的,我只是写了 r'C:\tmp\tmp\prefix_name'。 prefix_name 被视为前缀名称,而不是 tensorflow 中路径的一部分。
      【解决方案3】:

      FWIW 我在 AI Platform(Cloud ML Engine)上训练自定义估算器时看到了这个错误。我的问题是由 GCS 存储桶的 region 引起的,我在其中保存了检查点/模型元数据。

      当此存储桶的 region 设置为 us (multiple regions in United States) 时,我在评估期间看到了此错误。将 GCS 存储桶的 region 设置为运行 AI Platform 作业的同一 region(在我的情况下为 us-central1 (Iowa))解决了该问题。

      【讨论】:

        猜你喜欢
        • 2018-02-16
        • 1970-01-01
        • 2016-09-08
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2017-07-30
        • 2019-04-03
        相关资源
        最近更新 更多