使用tensorboard可视化模型
Tensorboard是TF自带的可视化工具。它可以让我们从各个角度观察与修改模型,比如观察模型在训练时的loss动态变化曲线而无需在迭代完毕后再画图、绘制神经网络的结构图、调节超参数等。下面以最简单的形式展示tensorboard的常用功能。
开启tensorboard
打开命令行输入
tensorboard --logdir logs
然后回车。前两个参数固定,第三个参数表示tensorboard所要观察的文件夹位置。后面再使用TF将信息写入该文件夹中,tensorboard就可以从中读取数据用于可视化。输出如下:

进入得到的链接,就是tensorboard的界面了。这时你的logs文件夹应该还是空的,没有写入数据,所以tensorboard无法可视化。下面介绍如何向文件夹中写入数据。
Scalars
Scalars用来可视化时间步下的状态曲线,比如loss的变化曲线。下面是代码示例:
import numpy as np
import tensorflow as tf
from datetime import datetime current_time = datetime.now().strftime("%Y{y}%m{m}%d{d}-%H-%M-%S").format(y = '年',m = '月',d='日')
log_path = 'logs/'+current_time#——————1——————
log_writer = tf.summary.create_file_writer(log_path)#——————2—————— for i in range(100):
data1 = np.random.normal()#——————3——————
data2 = np.random.normal()#——————3——————
with log_writer.as_default():#——————4——————
tf.summary.scalar('test1', data1, i) #——————5——————
tf.summary.scalar('test2', data2, i) #——————5——————
#1/2:创建以时间命名的用于保存记录的文件,并获取用于往该文件中写入记录的对象实例。注意!文件要保存在logs文件夹中,tensorboard才能读取。
#3:定义每次迭代要记录的值。
#4/5:使用#2定义的对象将记录以scalar的方式写入,scalar实际上就是画折线图,其中三个参数分别代表是:记录名、这次迭代要保存的值、第几次迭代。可以看出,一个文件可以保存多条记录,而每条记录都含有多次迭代。
在tensorboard界面中,右上角点击刷新,或者在下拉选项中选择scalar,tensorboard就会显示输出的记录。界面中还能调节平滑度什么的,这里就不记录了。Tensorboard的一大好处在于它能在代码执行的时候同步可视化图像,上面的代码示例仅有100次迭代,不好体现,可以自己尝试一下。
可视化后的折线图界面如下:

Graphs
可视化模型结构,但是显示出来的结构很乱,几乎没法看,暂时没弄懂看的是什么。这里先记录显示流程。代码示例如下:
import numpy as np
from tensorflow.keras import Input,Model,layers,losses,callbacks logdir="logs/test"
tensorboard_callback = callbacks.TensorBoard(log_dir=logdir)#——————1——————
class TestModel(Model):#——————2——————
def __init__(self):
super().__init__()
self.layer1 = layers.Dense(10)
self.layer2 = layers.Dense(1)
def call(self,inputs):
x = self.layer1(inputs)
x = self.layer2(x)
return x
model = TestModel()#——————3——————
model.compile(optimizer='rmsprop',loss='mse')#——————4——————
model.fit(np.ones([3,10]),
np.ones([3,1]),
callbacks=[tensorboard_callback]) #——————5——————
#1:定义保存模型结构的文件,获取一个回调函数对象,用于在fit的时候将模型计算图记录并保存。
#2:继承Model类自定义我们的模型,只要实现以上两个函数即可。
#3/4/5:实例化模型、编译,然后fit,让上面定义的回调函数过一遍我们的模型,这样一来它就能将结构记录下来了。
然后打开tensorboard网页,右上角下拉选中GRAPH,就能看到画出的图了。如下图(显示的玩意儿看不太懂):

另外,因为是在fit中保存的结构,所以它在保存的时候会多包一层train文件夹。
Hparams
超参数优化。暂时用不到,以后再记录。
使用tensorboard可视化模型的更多相关文章
- 使用 TensorBoard 可视化模型、数据和训练
使用 TensorBoard 可视化模型.数据和训练 在 60 Minutes Blitz 中,我们展示了如何加载数据,并把数据送到我们继承 nn.Module 类的模型,在训练数据上训练模型,并在测 ...
- 利用Tensorboard可视化模型、数据和训练过程
在60分钟闪电战中,我们像你展示了如何加载数据,通过为我们定义的nn.Module的子类的model提供数据,在训练集上训练模型,在测试集上测试模型.为了了解发生了什么,我们在模型训练时打印了一些统计 ...
- 利用tensorboard可视化checkpoint模型文件参数分布
写在前面: 上周微调一个文本检测模型seglink,将特征提取层进行冻结,只训练分类回归层,然而查看tensorboard发现里面有histogram显示模型各个参数分布,看了目前这个训练模型参数分布 ...
- TensorFlow2.0(9):TensorBoard可视化
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 【猫狗数据集】利用tensorboard可视化训练和测试过程
数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...
- tensorboard可视化详细
tensorboard可视化详细 2019-09-06 tensorboard可视化的官方学习链接 1.tensorboard可视化的用途 首要的目的是记录tensorflow的Graph,tenso ...
- 深度学习04-(Tensorflow简介、图与会话、张量基本操作、Tensorboard可视化、综合案例:线性回归)
深度学习04-Tensorflow 深度学习04-(Tensorflow) Tensorflow概述 Tensorflow简介 什么是Tensorflow Tensorflow的特点 Tensorfl ...
- Tensorflow学习笔记3:TensorBoard可视化学习
TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, Tenso ...
- 学习TensorFlow,TensorBoard可视化网络结构和参数
在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可 ...
- tensorboard可视化节点却没有显示图像的解决方法---注意路径问题加中文文件名
问题:完成graph中的算子,并执行tf.Session后,用tensorboard可视化节点时,没有显示图像 1. tensorboard 1.10 我是将log文件存储在E盘下面的,所以直接在E盘 ...
随机推荐
- ChatGPT 客户端推荐
通过按量计费的 Token 使用 ChatGPT 可以获得比免费 ChatGPT 更快的响应速度,但又不必支付昂贵的每月 20 美金订阅费用.下面是一些我个人喜欢的支持 Token 的 ChatGPT ...
- That's not my Neighbor 之 Chester 问题答案
Q: What is the meaning of life, the universe and everything else? A: 42 参见:生命.宇宙以及任何事情的终极答案 Q: What ...
- Android 水平滚动List 一项Item占满一页宽 设定单次滑动一次切换一次Item
背景:水平滚动的List,一项Item占满页面宽度,相当于数量不定的选项卡,每个选项卡占满一页,左右滑动时,如何限制一次只能滑动一个Item 步骤: 1. 水平滚动布局 linearLayoutMan ...
- js玩儿爬虫
前言 提到爬虫可能大多都会想到python,其实爬虫的实现并不限制任何语言. 下面我们就使用js来实现,后端为express,前端为vue3. 实现功能 话不多说,先看结果: 这是项目链接:https ...
- 探索不同引擎Innodb和Myisam的索引优化方案
数据库可能存在千万级的数据,必须将这些行数据以一定的结构组织起来做到高效的增删改查. 我们将分别探索innodb和myisam两种引擎的索引方案. 一.InnoDB的索引 1.假设表初始没有记录,只有 ...
- JWT单点登录
单点登录 概念:登录某集团的某一产品之后,访问其他产品的网站时就会是登录状态,比如登录QQ之后,进入QQ游戏的时候就是登录过的状态,具体实现方法有以下: Redis+token实现单点登录: 生成一个 ...
- Angular 18+ 高级教程 – Change Detection & Ivy rendering engine
前言 不熟悉 Angular 的朋友可能不了解 Change Detection 和目前当火的 Signal 之间的关系,以至于认为现在应该要学习新潮流 Signal 而不是已经过时的 Change ...
- JavaScript – Fetch
前言 上一篇 JavaScript – XMLHttpRequest 有提到 XMLHttpRequest 正在被 Fetch 取代,这篇就继续介绍 Fetch 吧. 参考 阮一峰 – Fetch A ...
- SQL Server – Trigger 触发器
参考: SQLServer触发器详解(概述.工作原理.应用) CREATE TRIGGER (Transact-SQL) SQL Server Triggers and Transactions 以前 ...
- 系统编程-进程-探究父子进程的数据区、堆、栈空间/ 当带缓存的C库函数遇上fork
1. test1 #include <stdio.h> #include <unistd.h> #include <stdlib.h> /******全局变量位于数 ...