当我们对模型进行了训练后,就需要把模型保存起来,便于在预测时直接用已经训练好的模型进行预测。

保存模型的权重和偏置值

假设我们已经训练好了模型,其中有关于weights和biases的值,例如:

import tensorflow as tf
# 保存到文件
W = tf.Variable([[1, 2, 3], [3, 4, 5]], dtype=tf.float32, name='weights')
b = tf.Variable([[1, 2, 3]], dtype=tf.float32, name='biases')

然后我们初始化这些变量的值,假装是训练后被设置上的值:

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

最后进行保存:

# 创建saver
saver = tf.train.Saver()
save_path = saver.save(sess, "D:/todel/python/saver/save_net.ckpt")
print("保存的路径为:", save_path)

这样在打印出:

保存的路径为: D:/todel/python/saver/save_net.ckpt

在那个目录下,我们看到:

这样,这些训练后的参数就被保存起来了。

完整的保存参数的代码为:

import tensorflow as tf
# 保存到文件
W = tf.Variable([[1, 2, 3], [3, 4, 5]], dtype=tf.float32, name='weights')
b = tf.Variable([[1, 2, 3]], dtype=tf.float32, name='biases') init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init) # 创建saver
saver = tf.train.Saver()
save_path = saver.save(sess, "D:/todel/python/saver/save_net.ckpt")
print("保存的路径为:", save_path)

恢复模型的权重和偏置值

在我们训练好模型并把训练后的权重和偏置值保存了之后,当我们需要进行预测时,只要读取这个已经保存好的权重和偏置值就可以进行预测了。

当然,这里的模型结构还是需要进行创建的,因为我们保存的仅仅是权重值和偏置值。

首先定义要恢复的权重和偏置值的结构:

import tensorflow as tf
import numpy as np
# 定义权重和偏置值的结构,但其中的数值随便填
W = tf.Variable(np.arange(6).reshape((2, 3)), dtype=tf.float32, name="weights")
b = tf.Variable(np.arange(3).reshape((1, 3)), dtype=tf.float32, name="biases")

注意:其中的name要跟之前保存时一致。

然后进行加载:

saver = tf.train.Saver()
sess = tf.Session()
# 不需要对变量进行初始化,因为这些变量的值我们会从saver中进行恢复
saver.restore(sess, "D:/todel/python/saver/save_net.ckpt")
print("weights:", sess.run(W))
print("biases:", sess.run(b))

这样输出为:

weights: [[ 1.  2.  3.]
[ 3. 4. 5.]]
biases: [[ 1. 2. 3.]]

就是前面我们保存的内容被恢复出来了。

完整的恢复代码为:

import tensorflow as tf
import numpy as np
# 定义权重和偏置值的结构,但其中的数值随便填
W = tf.Variable(np.arange(6).reshape((2, 3)), dtype=tf.float32, name="weights")
b = tf.Variable(np.arange(3).reshape((1, 3)), dtype=tf.float32, name="biases") saver = tf.train.Saver()
sess = tf.Session()
# 不需要对变量进行初始化,因为这些变量的值我们会从saver中进行恢复
saver.restore(sess, "D:/todel/python/saver/save_net.ckpt")
print("weights:", sess.run(W))
print("biases:", sess.run(b))

tensorflow保存读取-【老鱼学tensorflow】的更多相关文章

  1. tensorflow分类-【老鱼学tensorflow】

    前面我们学习过回归问题,比如对于房价的预测,因为其预测值是个连续的值,因此属于回归问题. 但还有一类问题属于分类的问题,比如我们根据一张图片来辨别它是一只猫还是一只狗.某篇文章的内容是属于体育新闻还是 ...

  2. tensorflow安装-【老鱼学tensorflow】

    TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,Tensor ...

  3. tensorflow例子-【老鱼学tensorflow】

    本节主要用一个例子来讲述一下基本的tensorflow用法. 在这个例子中,我们首先伪造一些线性数据点,其实这些数据中本身就隐藏了一些规律,但我们假装不知道是什么规律,然后想通过神经网络来揭示这个规律 ...

  4. tensorflow变量-【老鱼学tensorflow】

    在程序中定义变量很简单,只要定义一个变量名就可以,但是tensorflow有点类似在另外一个世界,因此需要通过当前的世界中跟tensorlfow的世界中进行通讯,来告诉tensorflow的世界中定义 ...

  5. tensorflow激励函数-【老鱼学tensorflow】

    当我们回到家,如果家里有异样,我们能够很快就会发现家中的异样,那是因为这些异常的摆设在我们的大脑中会产生较强的脑电波. 当我们听到某个单词,我们大脑中跟这个单词相关的神经元会异常兴奋,而同这个单词无关 ...

  6. tensorflow卷积神经网络-【老鱼学tensorflow】

    前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...

  7. tensorflow Tensorboard可视化-【老鱼学tensorflow】

    tensorflow自带了可视化的工具:Tensorboard.有了这个可视化工具,可以让我们在调整各项参数时有了可视化的依据. 本次我们先用Tensorboard来可视化Tensorflow的结构. ...

  8. tensorflow 传入值-【老鱼学tensorflow】

    上个文章中讲述了tensorflow中如何定义变量以及如何读取变量的方式,本节主要讲述关于传入值. 变量主要用于在tensorflow系统中经常会被改变的值,而对于传入值,它只是当tensorflow ...

  9. tensorflow RNN循环神经网络 (分类例子)-【老鱼学tensorflow】

    之前我们学习过用CNN(卷积神经网络)来识别手写字,在CNN中是把图片看成了二维矩阵,然后在二维矩阵中堆叠高度值来进行识别. 而在RNN中增添了时间的维度,因为我们会发现有些图片或者语言或语音等会在时 ...

随机推荐

  1. vue+axios实现文件下载

    功能:点击导出按钮,提交请求,下载excel文件: 第一步:跟后端童鞋确认交付的接口的response header设置了 axios({ method: 'post', url: 'api/user ...

  2. 关于 redis 的 数据类型 和 内存模型

    该文章 是在读了 公众号 : java 后端技术 之后 做的一个小记录 原文网址  : https://mp.weixin.qq.com/s/mI3nDtQdlVlLv2uUTxJegA 作者文章写的 ...

  3. 第四周博客作业<西北师范大学|李晓婷>

    1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求链接:www.cnblogs.com/nwnu-daizh/p/10487329.html 3.本周点评 ...

  4. 细说Cookie--转

    Cookie虽然是个很简单的东西,但它又是WEB开发中一个很重要的客户端数据来源,而且它可以实现扩展性很好的会话状态, 所以我认为每个WEB开发人员都有必要对它有个清晰的认识.本文将对Cookie这个 ...

  5. CentOS 7 安装docker (图文)

     一定要用root账号登录系统,打开终端/或远程工具(如xshell)登录系统 检查是否已经安装命令  rpm –qa|grep docker 出现如上说明已安装 也可用命令docker -v  (如 ...

  6. Redux thunk中间件

    redux-thunk https://github.com/reduxjs/redux-thunk Why Do I Need This? Thunks are the recommended mi ...

  7. springMVC的controller

    控制器controller 负责处理DispatcherServlet分发请求,把业务处理层封装成一个model,然后把该model返回给对应的view. @Controller 用于标记在一个类上, ...

  8. 迅为IMX6Q PLUS开发板烧写Android6.0系统方法

    平台:迅为IMX6Q PLUS开发板工具:MfgTool2 工具 镜像文件在光盘目录“03 镜像_android 6.0.1 文件系统”下.其中商业级核心板为 2G内存镜像,工业级核心板为 1G 内存 ...

  9. java实现单链接的几种常用操作

    public class ListNode { public int value; public ListNode next; public ListNode(int value) { this.va ...

  10. UOJ #460 新年的拯救计划

    清真的构造题 UOJ# 460 题意 求将$ n$个点的完全图划分成最多的生成树的数量,并输出一种构造方案 题解 首先一棵生成树有$ n-1$条边,而原完全图只有$\frac{n·(n-1)}{2}$ ...