Tensorflow |(1)初识Tensorflow

Tensorflow |(2)张量的阶和数据类型及张量操作

Tensorflow |(3)变量的的创建、初始化、保存和加载

Tensorflow |(4)名称域、图 和会话

Tensorflow |(5)模型保存与恢复、自定义命令行参数


模型保存与恢复、自定义命令行参数、

在我们训练或者测试过程中,总会遇到需要保存训练完成的模型,然后从中恢复继续我们的测试或者其它使用。模型的保存和恢复也是通过tf.train.Saver类去实现,它主要通过将Saver类添加OPS保存和恢复变量到checkpoint。它还提供了运行这些操作的便利方法。

tf.train.Saver(var_list=None, reshape=False, sharded=False, max_to_keep=5, keep_checkpoint_every_n_hours=10000.0, name=None, restore_sequentially=False, saver_def=None, builder=None, defer_build=False, allow_empty=False, write_version=tf.SaverDef.V2, pad_step_number=False)

  • var_list:指定将要保存和还原的变量。它可以作为一个dict或一个列表传递.
  • max_to_keep:指示要保留的最近检查点文件的最大数量。创建新文件时,会删除较旧的文件。如果无或0,则保留所有检查点文件。默认为5(即保留最新的5个检查点文件。)
  • keep_checkpoint_every_n_hours:多久生成一个新的检查点文件。默认为10,000小时

保存

保存我们的模型需要调用Saver.save()方法。save(sess, save_path, global_step=None),checkpoint是专有格式的二进制文件,将变量名称映射到张量值。

import tensorflow as tfa = tf.Variable([[1.0,2.0]],name="a")
b = tf.Variable([[3.0],[4.0]],name="b")
c = tf.matmul(a,b)saver=tf.train.Saver()
with tf.Session() as sess:tf.global_variables_initializer().run()print(sess.run(c))saver.save(sess, '/tmp/ckpt/test/matmul')

我们可以看保存了什么文件

在多次训练的时候可以指定多少间隔生成检查点文件

saver.save(sess, '/tmp/ckpt/test/matmu', global_step=0) ==> filename: 'matmu-0'saver.save(sess, '/tmp/ckpt/test/matmu', global_step=1000) ==> filename: 'matmu-1000'

恢复

恢复模型的方法是restore(sess, save_path),save_path是以前保存参数的路径,我们可以使用tf.train.latest_checkpoint来获取最近的检查点文件(也恶意直接写文件目录)

import tensorflow as tfa = tf.Variable([[1.0,2.0]],name="a")
b = tf.Variable([[3.0],[4.0]],name="b")
c = tf.matmul(a,b)saver=tf.train.Saver(max_to_keep=1)
with tf.Session() as sess:tf.global_variables_initializer().run()print(sess.run(c))saver.save(sess, '/tmp/ckpt/test/matmul')# 恢复模型model_file = tf.train.latest_checkpoint('/tmp/ckpt/test/')saver.restore(sess, model_file)print(sess.run([c], feed_dict={a: [[5.0,6.0]], b: [[7.0],[8.0]]}))

自定义命令行参数

tf.app.run(),默认调用main()函数,运行程序。main(argv)必须传一个参数。

tf.app.flags,它支持应用从命令行接受参数,可以用来指定集群配置等。在tf.app.flags下面有各种定义参数的类型

  • DEFINE_string(flag_name, default_value, docstring)

  • DEFINE_integer(flag_name, default_value, docstring)

  • DEFINE_boolean(flag_name, default_value, docstring)

  • DEFINE_float(flag_name, default_value, docstring)

第一个也就是参数的名字,路径、大小等等。第二个参数提供具体的值。第三个参数是说明文档

tf.app.flags.FLAGS,在flags有一个FLAGS标志,它在程序中可以调用到我们前面具体定义的flag_name.

import tensorflow as tfFLAGS = tf.app.flags.FLAGStf.app.flags.DEFINE_string('data_dir', '/tmp/tensorflow/mnist/input_data',"""数据集目录""")
tf.app.flags.DEFINE_integer('max_steps', 2000,"""训练次数""")
tf.app.flags.DEFINE_string('summary_dir', '/tmp/summary/mnist/convtrain',"""事件文件目录""")def main(argv):print(FLAGS.data_dir)print(FLAGS.max_steps)print(FLAGS.summary_dir)print(argv)if __name__=="__main__":tf.app.run()

Tensorflow |(5)模型保存与恢复、自定义命令行参数相关推荐

  1. linux自定义命令行参数,如何自定义一个Linux命令(简单易懂版)

    好久没写东西了,如果不往外输出,就不知道自己到底经历过什么,学到过什么,简书的第一篇文章从这篇前年写在csdn的文章开启.以下是正文,希望大家能够互相支持,共勉! Linux系统提供了大量的命令供用户 ...

  2. 命令行编译_[Bazel]自定义命令行编译标志

    1 名词 2 背景 3 自定义构建设置的定义 4 自定义构建设置的实现和实例化 5 自定义规则绑定自定义构建设置 6 小结 7 参考资料 1 名词 这里名词只做个索引,方便理解,可能现在反而让理解变得 ...

  3. pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)

    考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...

  4. 【pytest】Hook 方法之 pytest_addoption :注册命令行参数

    Hook 方法之 pytest_addoption : pytest_addoption 可以让用户注册一个自定义的命令行参数,方便用户将数据传递给 pytest: 这个 Hook 方法一般和 内置 ...

  5. Tensorflow 模型保存与恢复(2)使用SavedModel

    使用SavedModel 保存和恢复模型 本篇介绍使用SavedModel进行模型的保存与恢复. 其他相关: Tensorflow 模型保存与恢复(1)使用tf.train.Saver() Tenso ...

  6. 002 第一季SpringBoot2核心技术-核心功能:配置文件、Web开发(原生组件)、数据访问、单元测试、指标监控、原理解析:@Value、命令行参数、手动获取bean、自定义starter

    三.核心技术之- ->核心功能 1. 配置文件 1.1 文件类型 1.1.1 properties 同以前的properties用法 优先级高于yml的方式. 1.1.2 yaml 1) 简介 ...

  7. tensorflow命令行参数:tf.app.flags.DEFINE_string、tf.app.flags.DEFINE_integer、tf.app.flags.DEFINE_boolean

    tf 中定义了 tf.app.flags.FLAGS ,用于接受从终端传入的命令行参数,相当于对Python中的命令行参数模块optpars(参考: python中处理命令行参数的模块optpars ...

  8. 调优哪家强——tensorflow命令行参数

    作者系中国科学院助理研究员. 深度学习神经网络往往有过多的Hyperparameter需要调优,优化算法.学习率.卷积核尺寸等很多参数都需要不断调整,使用命令行参数是非常方便的.有两种实现方式,一是利 ...

  9. scons 自定义命令行参数传递

    scons 在做命令的时候, 可能需要一些自定义的编译选项, 开始直接用 parse 参数传, 结果一直报错, 后面找到官方的提供的方法, 比如这样 scons debug=1 在scons里面有个 ...

最新文章

  1. enum java 原理_Java 枚举实现原理
  2. 多进程同时写一个文件会怎样?分别用write和fwrite去观察现象
  3. 充分利用Linux操作系统安全防护工具(转贴)
  4. 清理系统垃圾的快捷方法
  5. linux命令:vim文件操作命令、新建用户,查看用户列表,chown命令
  6. 歌谣--回顾2020 展望2021
  7. linux共享数据,使用Linux共享数据对象
  8. 百度云服务器bcc搭建php环境,使用百度云服务器BCC经验谈
  9. mysql数据库数字类型_Mysql 数据库数值类型详解
  10. Cisco 3550配置DHCP中继代理
  11. 转换onnx_模型转换工具X2Paddle操作大全
  12. 跳频通信(梅文华)pdf
  13. 洛谷P1069 细胞分裂 数学
  14. matlab高斯消去法解线性方程组,高斯消元法—求解线性方程组与实例分析应用.pdf...
  15. 洋葱架构简介——分离是为了更好的结合
  16. OpenCV初试云雨
  17. 剪贴板增强工具CLCL
  18. 申请上计算机课的申请,诺丁汉大学计算机学院课程申请通道将即将关闭,抓紧上车了...
  19. 元宇宙与ChatGPT结合 一场颠覆式场景革命或将到来?
  20. 身份证号,手机号校验

热门文章

  1. MySQL优化篇:数据准备
  2. MySQL基础篇:数据操作语言DML
  3. 什么是接口幂等性?为什么会产生这个问题?如何保证接口幂等性?
  4. 神了!异常信息突然就没了?
  5. 查询提升200倍,ClickHouse你值得拥有!
  6. 人人都能看懂的 6 种限流实现方案!(纯干货)
  7. 怎么用IDEA快速查看类图关系?
  8. 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗
  9. 朋友在小厂待到三十多岁了 现在跳槽能找到什么样的工作
  10. 如何设计一款电商产品?