使用Seq2Seq+Attention模型恢复TensorFlow模型与元图时出错
搞定TensorFlow模型恢复的错误问题
嘿,我一眼就瞅见你代码里的问题啦——你调用saver.restore()的时候,居然传了.data-00000-of-00001这个文件的路径!这可不对,TensorFlow恢复模型根本不需要直接指定这个.data后缀的文件,你只用给它不带后缀的checkpoint基础文件名就行。
修正后的加载代码
直接改这一行就好:
with tf.Session() as sess: saver = tf.train.import_meta_graph('/media/saurabh/New Volume/nlp_ucf/project/model/model_0.ckpt.meta') # 只需要传入checkpoint的基础名称,不用带.data后缀! saver.restore(sess, '/media/saurabh/New Volume/nlp_ucf/project/model/model_0.ckpt')
为啥会出这错?
给你掰扯清楚:
.meta文件是用来保存计算图结构的,import_meta_graph加载它之后会自动创建对应的Saver对象。.data文件确实存着模型的权重参数,但TensorFlow的Saver机制会自动根据你给的基础文件名,去找到对应的.data和.index文件,根本不用你手动指定.data的路径。你直接传.data路径,它找不到配套的索引文件,可不就报错了嘛。
额外的小技巧
要是你之后训练多个版本的模型,用tf.train.latest_checkpoint()自动获取最新的checkpoint路径会更省心,不用手动改文件名:
with tf.Session() as sess: # 自动找到目录下最新的checkpoint checkpoint_path = tf.train.latest_checkpoint('/media/saurabh/New Volume/nlp_ucf/project/model/') saver = tf.train.import_meta_graph(checkpoint_path + '.meta') saver.restore(sess, checkpoint_path)
内容的提问来源于stack exchange,提问作者talos1904
相关产品推荐
相关产品推荐

