TensorFlow学习笔记10——TensorFlow保存和调用模型遇到的问题

参考http://blog.csdn.net/lwplwf/article/details/62419087,学习了tensorflow怎么保存和调用模型。代码如下:

存储模型:

#import tensorflow as tf
#
## 声明两个变量
#v1 = tf.Variable(tf.random_normal([1, 2]), name="v1")
#v2 = tf.Variable(tf.random_normal([2, 3]), name="v2")
#init_op = tf.global_variables_initializer() # 初始化全部变量
##saver = tf.train.Saver(write_version=tf.train.SaverDef.V1) # 声明tf.train.Saver类用于保存模型
#saver = tf.train.Saver() # 声明tf.train.Saver类用于保存模型
#with tf.Session() as sess:
#    sess.run(init_op)
#    print("v1:", sess.run(v1)) # 打印v1、v2的值一会读取之后对比
#    print("v2:", sess.run(v2))
#    saver_path = saver.save(sess, "./save/model.ckpt")  # 将模型保存到save/model.ckpt文件
#    print("Model saved in file:", saver_path)

读取模型:

import tensorflow as tf

# 使用和保存模型代码中一样的方式来声明变量
v1 = tf.Variable(tf.random_normal([1, 2]), name="v1")
v2 = tf.Variable(tf.random_normal([2, 3]), name="v2")
saver = tf.train.Saver() # 声明tf.train.Saver类用于保存模型
with tf.Session() as sess:
    saver.restore(sess, "./save/model.ckpt") # 即将固化到硬盘中的Session从保存路径再读取出来
    print("v1:", sess.run(v1)) # 打印v1、v2的值和之前的进行对比
    print("v2:", sess.run(v2))
    print("Model Restored")

按照该文中的说法,将模型保存后,再读模型,执行的结果和第一次应该都相同。我多次测试,遇到很多问题,最终解决了,每次读模型得到的结果都相同,但这是有条件的。先把结果贴上来:


v1: [[ 0.26898372 0.25526121]]
v2: [[-0.52214134 -1.2684648 -0.80299926]
[-0.7679857 -0.74319261 -0.47802085]]
Model Restored

中间遇到的问题主要有:
1、第1次执行保存的程序时,路径写错,导致保存失败。将路径代码修改后,保存成功。这样保存了多个v1和v2,即v1_1、v1_2和v1_1、v1_2。这样去读取模型的话,提示错误:
At least two variables have the same name: v2。
2、在执行完保存模型后,在spyder环境中,直接在同一个.py文件中,将保存模型的代码注释掉,执行读取的模型,提示错误:
Key v2_1 not found in checkpoint。
.

重启spyder后,保证保存模型的代码一次性执行正确。然后重启spyder,保证读取模型的代码一次性执行正确。则可正确读取模型。

究其原因,我还不清楚┭┮﹏┭┮

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值