Tensorflow学习笔记----模型的保存和读取(4)
一、模型的保存:tf.train.Saver类中的save
TensorFlow提供了一个一个API来保存和还原一个模型,即tf.train.Saver类。以下代码为保存TensorFlow计算图的方法:



二、模型的读取:tf.train.Saver类中的restore
注意:需要重新定义的变量大小和保存的模型变量大小需相同

通过以上方式保存和加载了TensorFlow计算图上定义的全部变量。但有时候只需要保存和加载部分变量,
比如:之前训练好了一个五层的神经网络模型,现想尝试一个六层的神经网络,可将原来的五层神经网络直接加载到新的模型中,仅仅训练最后一层神经网络。
三、保存和加载部分变量:
部分:在声明tf.train.Saver类时可以提供一个列表来指定需要保存或加载的变量。
比如:在加载模型的代码中使用 saver = tf.train.Saver( [v1] ) 命令来构建tf.trian.Saver类,那么只有变量v1会被加载进来。
重命名:tf.train.Saver类支持采用字典在保存和加载时对变量进行重命名。
saver = tf.train.Saver({"v1":newv1, "v2":newv2}) :将原来名称为v1,v2加载到变量newv1和newv2中。这时候就可以给变量newv1和newv2重新修改name了。代码:

重命名的作用之一:可以使用变量的滑动平均值:
两种方法可以提取变量的滑动平均值。
①saver = tf.train.Saver( { "v/ExponentialMovingAverage":newv } )【只要创建一个v的滑动平均类,则会创建一个v的影子变量存在模型中,该代码是直接读取v的影子变量赋予给newv。】
②ema = tf.train.ExponentialMovingAverage(0.99)
saver = tf.train.Saver(ema.variables_to_restore()) 【ExponentialMovingAverage提供了一个variables_to_restore()函数直接生成代码①中提供的字典。
四、将计算图中变量变成常量:convert_variables_to_constants函数
通过这个函数可以将计算图中的变量及其取值通过常量的方式来保存。常在迁移学习中用到。


五、模型保存和加载的原理:
https://blog.csdn.net/u011026329/article/details/79190347
https://www.cnblogs.com/hellcat/p/6925757.html
https://blog.csdn.net/weixin_43215867/article/details/85163717
- model.ckpt.meta 文件保存了TensorFlow计算图的结构,可以理解为神经网络的网络结构
- model.ckpt 文件保存了TensorFlow程序中每一个变量的取值
- checkpoint 文件保存了一个目录下所有的模型文件列表
Tensorflow学习笔记----模型的保存和读取(4)的更多相关文章
- tensorflow学习笔记——模型持久化的原理,将CKPT转为pb文件,使用pb模型预测
由题目就可以看出,本节内容分为三部分,第一部分就是如何将训练好的模型持久化,并学习模型持久化的原理,第二部分就是如何将CKPT转化为pb文件,第三部分就是如何使用pb模型进行预测. 一,模型持久化 为 ...
- TensorFlow学习笔记(8)--网络模型的保存和读取【转】
转自:http://blog.csdn.net/lwplwf/article/details/62419087 之前的笔记里实现了softmax回归分类.简单的含有一个隐层的神经网络.卷积神经网络等等 ...
- Tensorflow学习笔记2019.01.22
tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
- TensorFlow学习笔记——LeNet-5(训练自己的数据集)
在之前的TensorFlow学习笔记——图像识别与卷积神经网络(链接:请点击我)中了解了一下经典的卷积神经网络模型LeNet模型.那其实之前学习了别人的代码实现了LeNet网络对MNIST数据集的训练 ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- TensorFlow学习笔记(一)
[TensorFlow API](https://www.tensorflow.org/versions/r0.12/how_tos/variable_scope/index.html) Tensor ...
- Tensorflow学习笔记2019.01.03
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
- Tensorflow学习笔记No.5
tf.data卷积神经网络综合应用实例 使用tf.data建立自己的数据集,并使用CNN卷积神经网络实现对卫星图像的二分类问题. 数据下载链接:https://pan.baidu.com/s/141z ...
随机推荐
- 完全二叉树(Complete Binary Tree)
Date:2019-03-25 19:36:45 判断一棵树是否为完全二叉树 #include <queue> using namespace std; void IsComplete(n ...
- linux--ubuntu的下载以及VMware Tool的安装
1. Ubuntu的下载:http://cn.ubuntu.com/download/ 2. VMware Tool的安装: 第一步:在主机上,从 Workstation Pro 菜单栏中选择虚拟机 ...
- Project Euler 27 Quadratic primes( 米勒测试 + 推导性质 )
题意: 欧拉发现了这个著名的二次多项式: f(n) = n2 + n + 41 对于连续的整数n从0到39,这个二次多项式生成了40个素数.然而,当n = 40时402 + 40 + 41 = 40( ...
- 洛谷P1914 小书童——密码
题目背景 某蒟蒻迷上了"小书童",有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且密码是由 ...
- nyoj26-孪生素数问题
孪生素数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再近的 ...
- 【LibreOJ 6277】数列分块入门 1 (分块)
emmm-学下分块~ 区间:数列中连续一段的元素 区间操作:将某个区间[a,b]的所有元素进行某种改动的操作 块:我们将数列划分成若干个不相交的区间,每个区间称为一个块 整块:在一个区间操作时,完整包 ...
- el表达式中的比较和包含
相等( equal ) :eq 不相等( not equal ): ne / neq 大于( greater than ): gt 小于( less than ): lt 大于等于( great th ...
- Sping面试题分析
1.开放中主要使用Spring的什么技术? (1)IOC容器管理各层的组件 (2) 使用AOP配置声明式事务 (3)整合其他框架 2简述AOP和IOC概念 AOP : Aspect Orienten ...
- idea debug打得断点第一次可以进入,第二次不能进入
- BP网络中的反向传播
本文的主要参考:How the backpropagation algorithm works 下面是BP网络的参数结构示意图 首先定义第l层网络第j个神经元的输出(activation) 为了表示简 ...