从移动的目录加载tensorflow模型

时间:2018-05-17 12:26:40

标签: python tensorflow directory load restore

base

好的,代码很简单。 并且使用原始路径加载张量流模型非常有效。

但问题是,如果我将张量流模型(包括.index,.meta,checkpoint)移动到其他路径,则会出现错误

  

tensorflow.python.framework.errors_impl.NotFoundError:   /家庭/ deep_learning_tests / tensorflow / d:/ LABTEST / tensorflow;没有这样的   文件或目录

它尝试查找原始文件路径。如果原始文件路径仍然具有模型(意味着模型仅复制到新目录),则它可以工作。但是如果原始文件目录被删除并且只剩下新目录,则会出现上述错误。

如何加载从原始目录移动的张量流模型?

2 个答案:

答案 0 :(得分:1)

只想添加一些内容。我用了 saver.restore(sess, 'path_to_dir')进行还原,此操作无效。我在path_to_dir中没有.ckpt文件,我只有3个文件:model_name.index,model_name.meta,model_name.data。所以我解决问题的方法是使用 saver.restore(sess, 'path_to_dir/model_name')

答案 1 :(得分:0)

好的,我终于设法了如何加载移动/复制的模型。

如果您正在使用

  

tf.train.latest_checkpoint

然后加载目标文件必须与创建时位于同一目录中。否则,您必须打开文件'checkpoint'并修改文件中的目录路径。它有效但不推荐。

我的建议是不要使用

  

<强> tf.train.latest_checkpoint

在将保存的模型移动或复制到另一个目录/系统时加载模型

请使用此

  

saver.restore(sess,'path / to / file')

然后它将加载模型。

要清楚,如果你想加载如下

saver = tf.train.import_meta_graph(filepath)
tf.reset_default_graph()
sess = tf.Session()
saver.restore(sess, tf.train.latest_checkpoint('file/path/to/new/directory'))

然后你必须将'checkpoint'文件修改为新的目录路径。

否则,只需执行

saver = tf.train.import_meta_graph(filepath)
tf.reset_default_graph()
sess = tf.Session()
saver.restore(sess, 'file/path/to/new/directory')

=============================================== =========== 我发现了人们应该知道的另一个问题。 不知何故,如果我在Windows中训练(没有检查linux或mac osx),检查点文件会用绝对路径写入其路径。

因此,如果您尝试从其他系统加载模型,则无法找到正确的加载目录路径,因为它正在查找由windows目录系统写入的绝对目录路径(以c:/或d开头: / etc)

我的检查点示例如下。

  

model_checkpoint_path:   “d:/ Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.357984_accuracy_0.5358-2700”   all_model_checkpoint_paths:   “d:/ Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.403583_accuracy_0.5247-1500”   all_model_checkpoint_paths:   “d:/ Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.385835_accuracy_0.5302-1800”   all_model_checkpoint_paths:   “d:/ Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.375068_accuracy_0.5334-2100”   all_model_checkpoint_paths:   “d:/ Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.359645_accuracy_0.5363-2400”   all_model_checkpoint_paths:   “d:/ Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.357984_accuracy_0.5358-2700”

如果您想要阅读它,那么您必须将其更改为相对路径,如下所示:

  

model_checkpoint_path:“_ loss_1.357984_accuracy_0.5358-2700”   all_model_checkpoint_paths:“_ loss_1.403583_accuracy_0.5247-1500”   all_model_checkpoint_paths:“_ loss_1.385835_accuracy_0.5302-1800”   all_model_checkpoint_paths:“_ loss_1.375068_accuracy_0.5334-2100”   all_model_checkpoint_paths:“_ loss_1.359645_accuracy_0.5363-2400”   all_model_checkpoint_paths:“_ loss_1.357984_accuracy_0.5358-2700”

然后它会起作用。 所以我建议检查检查点文件,如果它被写为绝对路径。