一、模型的保存: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

TensorFlow模型会保存在后缀为.ckpt的文件中。保存后在save这个文件夹中实际会出现3个文件,因为TensorFlow会将计算图的结构和图上参数取值分开保存。
  • model.ckpt.meta 文件保存了TensorFlow计算图的结构,可以理解为神经网络的网络结构
  • model.ckpt 文件保存了TensorFlow程序中每一个变量的取值
  • checkpoint 文件保存了一个目录下所有的模型文件列表

Tensorflow学习笔记----模型的保存和读取(4)的更多相关文章

  1. tensorflow学习笔记——模型持久化的原理,将CKPT转为pb文件,使用pb模型预测

    由题目就可以看出,本节内容分为三部分,第一部分就是如何将训练好的模型持久化,并学习模型持久化的原理,第二部分就是如何将CKPT转化为pb文件,第三部分就是如何使用pb模型进行预测. 一,模型持久化 为 ...

  2. TensorFlow学习笔记(8)--网络模型的保存和读取【转】

    转自:http://blog.csdn.net/lwplwf/article/details/62419087 之前的笔记里实现了softmax回归分类.简单的含有一个隐层的神经网络.卷积神经网络等等 ...

  3. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  4. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

  5. TensorFlow学习笔记——LeNet-5(训练自己的数据集)

    在之前的TensorFlow学习笔记——图像识别与卷积神经网络(链接:请点击我)中了解了一下经典的卷积神经网络模型LeNet模型.那其实之前学习了别人的代码实现了LeNet网络对MNIST数据集的训练 ...

  6. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  7. TensorFlow学习笔记(一)

    [TensorFlow API](https://www.tensorflow.org/versions/r0.12/how_tos/variable_scope/index.html) Tensor ...

  8. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  9. Tensorflow学习笔记No.5

    tf.data卷积神经网络综合应用实例 使用tf.data建立自己的数据集,并使用CNN卷积神经网络实现对卫星图像的二分类问题. 数据下载链接:https://pan.baidu.com/s/141z ...

随机推荐

  1. 前端开发—Javascript

    Javascript 语言简介: 语言规范: 注释:/  这是单行注释 /   /* 换行*/ 多行注释 结束符: :分号 语法基础 变量 变量声明 1 变量名可以是 数字 字母 下划线 $ 组成,不 ...

  2. linux部署.net core api并且实现上传图片

    为了体验.net在linux上运行,所以使用HttpClient东借西抄做了一个简单的api上传功能. 第一步,简单的上传功能: public class UploadHelper { private ...

  3. python 获取excel数据 自动登陆

    import xlrdimport timeimport unittestfrom selenium import webdriver class u8819(unittest.TestCase): ...

  4. Ubuntu下安装Tensorflow

    本文目录 引言 基于Anaconda的tensorflow安装 1 下载linux版本的Anaconda安装包 2 安装Anaconda 利用anaconda安装tensorflow 1 建立一个 c ...

  5. OA项目总结3

    struts2自定义标签中  使用in  判断当前值 是否在某个集合中 该属性一方面可以获取前端页面传递过来的参数   另外一个作用就是在数据回显时把用户已经拥有的权限id存入该集合中   放在栈顶 ...

  6. jQuery(基础dom及css操作)

    设置元素内容 元素属性操作 ---------- 元素样式操作 ---------------- 对象数组的遍历 测试代码: $(function () { var v=$('div').css([' ...

  7. ajax短轮询+php与服务器交互制作简易即时聊天网站

    主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 本文主要介绍ajax短轮询的简易实现方式. 看懂此文 ...

  8. CF47A Triangular numbers

    CF47A Triangular numbers 题意翻译 给定一个数n,问你是否存在一个整数i,满足i*(i+1)/2=n. 若存在,输出"YES",否则输出"NO&q ...

  9. 使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target 'android-7'

    出现的问题 [2013-01-11 10:52:39 - gridlayout_v7] Unable to resolve target 'android-7' 事由:在一次做九宫格时.误使用了gri ...

  10. OC第三天(内存管理)

    内存管理: 1.作用范围: 不论什么继承了NSObject的对象,堆基本数据类型无效如:int a ,float price;;等 2.原理: 每一个对象内部都保存了一个与之相关的整数,称为引用计数器 ...