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 文件保存了一个目录下所有的模型文件列表
最新文章
- HTML5 Application cache初探和企业应用启示
- async4j 普通用法、整合spring用法
- openssl证书相关
- php 增删改查练习
- 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录
- Oracle alter index rebuild 与 ORA-08104 说明
- Eclipse(Myeclipse)安装GoogleGWT
- 使用Uploadify 时,同时使用了jQuery.Validition 验证控件时,在IE11上出现JS缺少对象错误。
- 从A页面跳转到B页面,从B页面按浏览器自带按钮返回到A页面并且刷新页面--手机操作浏览器自带返回并自带刷新
- SQLite 附加数据库(http://www.w3cschool.cc/sqlite/sqlite-attach-database.html)
- cocos creator主程入门教程(五)—— 日志系统
- webpack学习笔记——sourcemap(使用webpack打包的项目如何调试代码)
- ubuntu远程windows桌面
- WPF自定义控件(二)の重写原生控件样式模板
- 一名优秀的UI设计师应该具备哪些条件?
- Spring Boot 简单的请求示例(包括请求体验证)
- 转:iPhone上关于相机拍照的图片的imageOrientation的问题
- 撩课-Python-每天5道面试题-第3天
- jetbrains激活 webstorm激活 webstorm激活码
- python学习笔记(6)--有道翻译爬虫
热门文章
- KEEPALIVED+LVS+MYCAT实现MYSQL高可用环境搭建
- kali 安装nessus
- CSS - 内联元素span 强制换行失败的可能原因
- [Papers] Semantic Segmentation Papers(1)
- STM32 ADC多通道转换DMA模式与非DMA模式两种方法(HAL库)
- 各项硬件使用剖析(一)---让你一眼就能区分瓶颈是Memory、processor ORdisk!
- pthread_cond 唤醒特定线程的方法
- 使用 from import方法导入Python模块
- 小米2S电池电量用尽充电无法开机解决方法
- 解决ORA-02395:超出I/O使用的调用限制问题