使用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盘 ...
随机推荐
- JSP中的JSTL 标签库
目录 JSTL 标签库 JSTL 标签库的使用步骤 core 核心库使用 <c:set /> (使用很少) <c:if /> <c:choose><c:whe ...
- [项目] 在openharmony上跑CV
板子资料 瑞星微 rk3568, CPU: RK3568四核64位Cortex-A55 处理器,采用全新ARM v8.2-A架构 Cortex A55 基于64位Armv8.2-A指令集设计,支持64 ...
- 神经网络之卷积篇:详解卷积神经网络示例(Convolutional neural network example)
详解卷积神经网络示例 假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片,想做手写体数字识别.32×32×3的RGB图片中含有某个数字,比如7,想识别它是从0-9这10个数字中的哪一 ...
- 探索不同引擎Innodb和Myisam的索引优化方案
数据库可能存在千万级的数据,必须将这些行数据以一定的结构组织起来做到高效的增删改查. 我们将分别探索innodb和myisam两种引擎的索引方案. 一.InnoDB的索引 1.假设表初始没有记录,只有 ...
- 【合合TextIn】OCR身份证 / 银行卡识别功能适配鸿蒙系统
一.鸿蒙系统与信创国产化的背景 自鸿蒙系统推出以来,其不仅成为了华为在软件领域的重要里程碑,更是国产操作系统的一面旗帜,也是国产移动平台几乎唯一的选择,标志着中国在构建独立自主的软件生态体系上迈 ...
- TypeScript – Work with JavaScript Library (using esbuild)
前言 JavaScript 早期是没有 Modular 和 Type (类型) 的. 随着这几年的普及, 几乎有维护的 Library 都有 Modular 和 Type 了. 但万一遇到没有 Mod ...
- Figma 学习笔记 – Color
大纲 Figma 的颜色是通过 FIll 实现的 (Fill 还有其它功能比如 fill 图片) 整体大概长这样, 我们一个一个看 颜色和 opacity
- windbg配置问题汇总(记录)
.loadby sos.dll mscorwks.symfix c:\windows\symbols windbg配置问题汇总 1.Failed to find runtime DLL (clr.dl ...
- QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?
简介 QT6框架中提供了JavaScript引擎类型QJSEngine ,可用于实现 C++应用程序和JavaScript代码之间的相互调用. 目录 什么是 ECMAScript ? JavaScri ...
- 墨天轮高分技术文档分享——Oracle升级迁移篇(共96个)
朋友们好久不见,在上期<墨天轮最受欢迎的技术文档-SQL优化篇>的留言中,有许多朋友表示想看数据库升级迁移相关的内容,经过搜集整理,这就为大家呈上!原文送墨值中,欢迎大家参与~ 数据库升级 ...