base
好的,代码很简单。 并且使用原始路径加载张量流模型非常有效。
但问题是,如果我将张量流模型(包括.index,.meta,checkpoint)移动到其他路径,则会出现错误
tensorflow.python.framework.errors_impl.NotFoundError: /家庭/ deep_learning_tests / tensorflow / d:/ LABTEST / tensorflow;没有这样的 文件或目录
它尝试查找原始文件路径。如果原始文件路径仍然具有模型(意味着模型仅复制到新目录),则它可以工作。但是如果原始文件目录被删除并且只剩下新目录,则会出现上述错误。
如何加载从原始目录移动的张量流模型?
答案 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”
然后它会起作用。 所以我建议检查检查点文件,如果它被写为绝对路径。