代码之家  ›  专栏  ›  技术社区  ›  Jon Deaton

在不同机器上恢复tensorflow模型

  •  0
  • Jon Deaton  · 技术社区  · 6 年前

    我在gpu集群上训练了tensorflow模型,使用

    saver = tf.train.Saver()
    saver.save(sess, config.model_file, global_step=global_step)
    

    现在我正试图用

    saver = tf.train.import_meta_graph('model-1000.meta')
    saver.restore(sess,tf.train.latest_checkpoint(save_path))
    

    在不同的系统上进行评估。问题是 saver.restore 产生以下错误:

        Traceback (most recent call last):
      File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1664, in <module>
        main()
      File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1658, in main
        globals = debugger.run(setup['file'], None, None, is_module)
      File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1068, in run
        pydev_imports.execfile(file, globals, locals)  # execute the script
      File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
        exec(compile(contents+"\n", file, 'exec'), glob, loc)
      File "/Users/jonpdeaton/Developer/BraTS18-Project/segmentation/evaluate.py", line 205, in <module>
        main()
      File "/Users/jonpdeaton/Developer/BraTS18-Project/segmentation/evaluate.py", line 162, in main
        restore_and_evaluate(save_path, model_file, output_dir)
      File "/Users/jonpdeaton/Developer/BraTS18-Project/segmentation/evaluate.py", line 127, in restore_and_evaluate
        saver.restore(sess, tf.train.latest_checkpoint(save_path))
      File "/Users/jonpdeaton/anaconda3/envs/BraTS/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1857, in latest_checkpoint
        if file_io.get_matching_files(v2_path) or file_io.get_matching_files(
      File "/Users/jonpdeaton/anaconda3/envs/BraTS/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 337, in get_matching_files
        for single_filename in filename
      File "/Users/jonpdeaton/anaconda3/envs/BraTS/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 519, in __exit__
        c_api.TF_GetCode(self.status.status))
    tensorflow.python.framework.errors_impl.NotFoundError: /afs/cs.stanford.edu/u/jdeaton/dfs/unet; No such file or directory
    

    似乎模型中存储了一些路径,或者 checkpoint 从培训的系统中生成的文件,在我正在进行评估的系统中不再有效。复制后如何在其他计算机上还原模型(用于评估) model-X.meta , model-X.index 检查点 文件夹?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Siyuan Ren    6 年前

    默认情况下, Saver 对象将绝对模型检查点路径写入 checkpoint 文件。所以这条路 tf.train.latest_checkpoint(save_path) 是你旧机器上的绝对路径。

    临时解决方案:

    1. 将实际模型文件路径直接传递给 restore 方法而不是结果 tf.train.latest_checkpoint .
    2. 手动编辑 检查点 文件,这是一个简单的文本文件。

    长期解决方案:

    saver = tf.train.Saver(save_relative_paths=True)
    
        2
  •  0
  •   Jon Deaton    6 年前

    使用您喜爱的文本编辑器打开检查点文件,只需将其中找到的绝对路径更改为文件名。