tensorflow笔记系列: 
(一) tensorflow笔记:流程,概念和简单代码注释 
(二) tensorflow笔记:多层CNN代码分析 
(三) tensorflow笔记:多层LSTM代码分析 
(四) tensorflow笔记:常用函数说明 
(五) tensorflow笔记:模型的保存与训练过程可视化 
(六)tensorflow笔记:使用tf来实现word2vec


保存与读取模型

在使用tf来训练模型的时候,难免会出现中断的情况。这时候自然就希望能够将辛辛苦苦得到的中间参数保留下来,不然下次又要重新开始。好在tf官方提供了保存和读取模型的方法。

保存模型的方法:

# 之前是各种构建模型graph的操作(矩阵相乘,sigmoid等等....)

saver = tf.train.Saver() # 生成saver

with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) # 先对模型初始化 # 然后将数据丢入模型进行训练blablabla # 训练完以后,使用saver.save 来保存
saver.save(sess, "save_path/file_name") #file_name如果不存在的话,会自动创建

将模型保存好以后,载入也比较方便,如下所示:

saver = tf.train.Saver()

with tf.Session() as sess:
#参数可以进行初始化,也可不进行初始化。即使初始化了,初始化的值也会被restore的值给覆盖
sess.run(tf.global_variables_initializer())
saver.restore(sess, "save_path/file_name") #会将已经保存的变量值resotre到 变量中。

简单的说,就是通过saver.save来保存模型,通过saver.restore来加载模型


使用tensorboard来使训练过程可视化

tensorflow还提供了一个可视化工具,叫tensorboard.启动以后,可以通过网页来观察模型的结构和训练过程中各个参数的变化。如下图所示

关于如何合理清楚的显示网络结构,我目前还不太搞得清楚,而且目前看来也不是太重要;但是要将训练的过程可视化还是比较方便的。简单的说,流程如下所示:

  • 使用tf.scalar_summary来收集想要显示的变量
  • 定义一个summury op, 用来汇总多个变量
  • 得到一个summy writer,指定写入路径
  • 通过summary_str = sess.run()
# 1. 由之前的各种运算得到此批数据的loss
loss = ..... # 2.使用tf.scalar_summary来收集想要显示的变量,命名为loss
tf.scalar_summary('loss',loss) # 3.定义一个summury op, 用来汇总由scalar_summary记录的所有变量
merged_summary_op = tf.merge_all_summaries() # 4.生成一个summary writer对象,需要指定写入路径,例如我这边就是/tmp/logdir
summary_writer = tf.train.SummaryWriter('/tmp/logdir', sess.graph) # 开始训练,分批喂数据
for(i in range(batch_num)):
# 5.使用sess.run来得到merged_summary_op的返回值
summary_str = sess.run(merged_summary_op) # 6.使用summary writer将运行中的loss值写入
summary_writer.add_summary(summary_str,i)

接下来,程序开始运行以后,跑到shell里运行

$ tensorboard --logdir /tmp/logdir

开始运行tensorboard.接下来打开浏览器,进入127.0.0.1:6006 就能够看到loss值在训练中的变化值了。

tensorflow笔记:模型的保存与训练过程可视化的更多相关文章

  1. tensorflow:模型的保存和训练过程可视化

    在使用tf来训练模型的时候,难免会出现中断的情况.这时候自然就希望能够将辛辛苦苦得到的中间参数保留下来,不然下次又要重新开始. 保存模型的方法: #之前是各种构建模型graph的操作(矩阵相乘,sig ...

  2. TensorFlow笔记-模型的保存,恢复,实现线性回归

    模型的保存 tf.train.Saver(var_list=None,max_to_keep=5) •var_list:指定将要保存和还原的变量.它可以作为一个 dict或一个列表传递. •max_t ...

  3. TensorFlow笔记-04-神经网络的实现过程,前向传播

    TensorFlow笔记-04-神经网络的实现过程,前向传播 基于TensorFlow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型 张量(tenso ...

  4. 【TensorFlow】TensorFlow基础 —— 模型的保存读取与可视化方法总结

    TensorFlow提供了一个用于保存模型的工具以及一个可视化方案 这里使用的TensorFlow为1.3.0版本 一.保存模型数据 模型数据以文件的形式保存到本地: 使用神经网络模型进行大数据量和复 ...

  5. Tensorflow学习笔记----模型的保存和读取(4)

    一.模型的保存:tf.train.Saver类中的save TensorFlow提供了一个一个API来保存和还原一个模型,即tf.train.Saver类.以下代码为保存TensorFlow计算图的方 ...

  6. Tensorflow Learning1 模型的保存和恢复

    CKPT->pb Demo 解析 tensor name 和 node name 的区别 Pb 的恢复 CKPT->pb tensorflow的模型保存有两种形式: 1. ckpt:可以恢 ...

  7. tensorflow 之模型的保存与加载(一)

    怎样让通过训练的神经网络模型得以复用? 本文先介绍简单的模型保存与加载的方法,后续文章再慢慢深入解读. #!/usr/bin/env python3 #-*- coding:utf-8 -*- ### ...

  8. tensorflow 之模型的保存与加载(三)

    前面的两篇博文 第一篇:简单的模型保存和加载,会包含所有的信息:神经网络的op,node,args等; 第二篇:选择性的进行模型参数的保存与加载. 本篇介绍,只保存和加载神经网络的计算图,即前向传播的 ...

  9. tensorflow 之模型的保存与加载(二)

    上一遍博文提到 有些场景下,可能只需要保存或加载部分变量,并不是所有隐藏层的参数都需要重新训练. 在实例化tf.train.Saver对象时,可以提供一个列表或字典来指定需要保存或加载的变量. #!/ ...

随机推荐

  1. visual studio 2017 编译v140 TRACKER : error TRK0005: Failed to locate: "CL.exe". 系统找不到指定的文件

    原因可能是vs2017中配置v140 的编译命令路径有问题 解决方案: 用vs2017的在线安装程序,选择修改 进去后选择单个组建,在编译器.生成工具和运行时里面把vc++2015.3…… 打钩的取消 ...

  2. Extjs3 combobox使用

    Combobox 在程序中应用十分普遍,每个combobox的选项 一般对应两个值:一个用于前台显示的值,一个与显示值对应的value值.在后台获取value的值需使用combobox的 Hidden ...

  3. ssh login waiting too much time

    usually dns error, please check /etc/resolv.conf

  4. Linux基础命令(四)

    作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 [root@bogon ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 byte ...

  5. 解决跨域HttpResponseJsonCORS, HttpResponseCORS 返回字典数据

    #!/usr/bin/python # -*- coding: UTF-8 -*- import json from django.http import HttpResponse def HttpR ...

  6. django的序列化问题

    Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式 1.serializers from django.core import seria ...

  7. linux sed批量替换多个文件内容

    sed -i "s/lgside/main/g" `grep -rl lgside /home/zn/work/project-template` 注意标点符号:`

  8. 自动化测试调查问卷送《QTP自动化测试最佳实践》

    自动化测试调查问卷送<QTP自动化测试最佳实践> http://automationqa.com/forum.php?mod=viewthread&tid=2308&fro ...

  9. Java中的静态方法是什么?

    静态方法是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法. 例如,我创建一个类,里面有一个静态方法: class Test{ public static int z(in ...

  10. 【Flask】Flask上下文

    # 上下文: ### Local对象:在`Flask`中,类似于`request`的对象,其实是绑定到了一个`werkzeug.local.Local`对象上.这样,即使是同一个对象,那么在多个线程中 ...