好的,我终于知道如何加载移动/复制的模型了。
如果你正在使用
tf.train.latest_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 开头: /等)
我的检查点示例如下。
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”
然后它将起作用。
所以我建议检查检查点文件是否写为绝对路径。