解决方法如下:
保存
# tensorflow模型持久化 saver
# 保存模型
import tensorflow as tf
#声明两个变量并计算它们的和
v1 = tf.Variable(tf.constant(1.0,shape=[1]),dtype=tf.float32,name='v1')
v2 = tf.Variable(tf.constant(2.0,shape=[1]),dtype=tf.float32,name='v2')
result =v1 + v2
init_op =tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
# 将模型保存起来
saver.save(sess,"chi_jiu_hua/model.ckpt")
tf.reset_default_graph()
读取
# 加载模型
import tensorflow as tf
v1 =tf.Variable(tf.constant(1.0,shape=[1]),name='v1')
v2 =tf.Variable(tf.constant(2.0,shape=[1]),name='v2')
result = v1+v2
saver = tf.train.Saver()
with tf.Session() as sess:
# tf.reset_default_graph()
tf.get_variable_scope().reuse_variables()
# 加载已保存的模型
saver.restore(sess,"chi_jiu_hua/model.ckpt")
print(sess.run(result))
原因:
首先查看变量的dtype和shape
1、首先是自己定义的参数变量是否和保存的参数变量的类型是一致的
2、在文件下面是否有一个叫做chockpoint的东西存在
3、最后如果运行多次出现NotFoundError (see above for traceback): Key Variable_4 not found in checkpoint
[[Node: save_2/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT_FLOAT,
这种情况,请使用tf.reset_default_graph(),还有就是这句话要放在前面一点。
4、还有就是保存好了模型,如果使用的是spyder请先关闭,之后在尝试读入模型
如果以上都无法解决你的问题,请删除模型之后,重新写入,再载入试试。