首页 > Python资料 博客日记
TensorBoard最全使用教程:看这篇就够了
2024-09-13 10:00:11Python资料围观56次
TensorBoard最全使用教程:看这篇就够了
前言
靠,天天学,天天学,就是一个工具人!!!
机器学习通常涉及在训练期间可视化和度量模型的性能。 有许多工具可用于此任务。 在本文中,我们将重点介绍 TensorFlow 的开源工具套件,称为 TensorBoard,虽然他是TensorFlow 的一部分,但是可以独立安装,并且服务于Pytorch等其他的框架。
一、什么是 TensorBoard?
TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括:
- 可视化模型的网络架构
- 跟踪模型指标,如损失和准确性等
- 检查机器学习工作流程中权重、偏差和其他组件的直方图
- 显示非表格数据,包括图像、文本和音频
- 将高维嵌入投影到低维空间
TensorBoard算是包含在 TensorFlow中的一个子服务。 TensorFlow 库是一个专门为机器学习应用程序设计的开源库。 Google Brain 于 2011 年构建了较早的 DistBelief 系统。随着其用户群的快速增长,它被简化并重构为我们现在称为 Tensorflow 的库。 TensorFlow 随后于 2015 年向公众发布。TensorBoard刚出现时只能用于检查TensorFlow的指标和TensorFlow模型的可视化,但是后来经过多方的努力其他深度学习框架也可以使用TensorBoard的功能,例如Pytorch已经抛弃了自家的visdom(听到过这个名字的人应该都不多了吧)而全面支持TensorBoard。
二、如何安装 TensorBoard
TensorBoard 包含在 TensorFlow 库中,所以如果我们成功安装了 TensorFlow,我们也可以使用 TensorBoard。 要单独安装 TensorBoard 可以使用如下命令:
pip install tensorboard
需要注意的是:因为TensorBoard 依赖Tensorflow ,所以会自动安装Tensorflow的最新版
三、如何查看是否安装TensorBoard
打开pycharm,在python Console中输入以下代码:
from torch.utils.tensorboard import SummaryWriter
如不提示错误,则安装成功,若提示以下错误:
TensorBoard logging requires TensorBoard version 1.15 or above
三、启动 TensorBoard(仅仅是启动)
要启动 TensorBoard,打开终端或命令提示符并运行:
1、首先进入你运行代码的环境
2、然后使用下面这条命令,路径是log文件的上一个目录,你如下面这个的是flower_experment的(相对)路径
(如果显示说找不到数据啥的,直接使用绝对路径一般就能解决)
一系列tensorboard错误以及解决方法:
tensorboard --logdir=<directory_name>
举个例子(相对路径更好用):
将 directory_name 标记替换为保存数据的目录。 默认是“logs”。
运行此命令后,我们将看到以下提示:
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass –bind_allTensorBoard 2.2.0 at http://localhost:6006/ (Press CTRL+C to quit)
这说明 TensorBoard 已经成功上线。 我们可以用浏览器打开http://localhost:6006/查看。
当页面打开时,我们将看到如下大概内容(因为没训练几轮,所以这个参数没什么变化):
四、TensorBoard 仪表板都有哪些玩意(前四个对于cv来说用的比较多)
TensorBoard 仪表板由用于可视化数据的不同组件组成。 我们将研究几个常用的组件。
上面的图只是部分可视化功能,全部可视化功能还有很多很多,如下:
1、TensorBoard Scalars
机器学习过程需要跟踪与模型性能相关的不同指标。这对于快速发现问题并确定模型是否过度拟合等非常重要。
使用 TensorBoard 的 Scalars Dashboard,可以可视化这些指标并更轻松地调试模型。第一个示例,在 MNIST 数据集上绘制模型的损失和准确性,使用的就是Scalars。
Scalars这个面板是最最长常用的面板,主要用于将神经网络训练过程中的acc(训练集准确率)val_acc(验证集准确率),loss(损失值),weight(权重)等等变化情况绘制成折线图。
它左边有一些参数设置:
Ignore outlines in chart scaling(忽略图表缩放中的轮廓),可以消除离散值
p1:是否显示数据下载链接。
p2:图表平滑过程中是否忽略异常点。
p3:控制每个run点信息的显示顺序。
p4:代表平滑系数,值越大平滑越多。
p5:横坐标刻度值。STEP:默认选项,横轴显示的是训练迭代次数。RELATIVE:这个相对指的是相对时间,相对于训练开始的时间,也就是说训练用时 ,单位是小时。WALL:指训练的绝对时间。
p6:选择要显示的内容,此处支持正则表达式。
p7:查看大图。
p8:是否对y轴进行对数化处理。
p9:如果拖动或缩放了坐标轴,点击后回到原始位置。
p10:下载显示的数据。
补充:在标量图中拉一个矩形,则把矩形内的数据放大展示。
2、TensorBoard Images
在处理图像数据时,如果希望查看数据查找问题,或者查看样本以确保数据质量,则可以使用 TensorBoard 的 Image Summary API。
3、TensorBoard Graphs
所有模型都可以看作是一个计算图。 有时很难通过单独查看代码来了解模型的体系结构。对其进行可视化可以很容易看到模型的结构, 也能够确保使用的架构是我们想要或设计的。
其实就是可以查看模型结构
4、TensorBoard Distributions and Histograms 分布和直方图
TensorBoard 分布和直方图是跟踪模型另一种好方法。 使用官方提供的回调,在训练后TensorBoard 上会显示几个选项。 如果我们转到Distributions 选项卡,将看到如下图:
这组图表显示了构成模型的张量。 在每个图的水平轴上显示 epoch 数,在垂直轴上显示了每个张量的值。 这些图表基本上显示了这些张量如何随着训练的进行而随时间变化。 较暗的区域显示值在某个区域停留了更长的时间(没更新)。 如果担心模型权重在每个epoch 都没有正确更新,可以使用此选项发现这些问题。
我们在Histograms选项上看到了一组不同的图表,它们表示模型的张量。
这些图显示了模型中张量的不同视图。每个图都有五个相互堆叠的直方图,代表训练过的五个epoch中的每一个。它们显示了张量权重倾向于集中在哪个区域的信息。这对于调试模型的行为,发现异常非常有用。
5、TEXT
文本是创建机器学习模型时常用的数据类型。 很多时候,很难将文本数据可视化。 TensorBoard可以使用 Text Summary API 轻松地可视化文本数据。 让我们看看它是如何工作的。
TensorBoar的Text 选项卡中输入的文本。
五、将 TensorBoard 与 PyTorch 结合使用
PyTorch 是另一个深受研究人员欢迎的深度学习框架。 PyTorch 现在也已经支持 TensorBoard了。
在使用 TensorFlow 时,使用 Summary API 创建了将数据记录到 logdir 文件夹的对象。 在使用 PyTorch 时,官方也提供了类似的API。
# Import the summary writer
from torch.utils.tensorboard import SummaryWriter# Create an instance of the object
writer = SummaryWriter()
这样就可以使用与 TensorFlow 相同的方式处理的相同 MNIST 数据集。(这只是示例代码,并不能运行)
import torch
import torchvision
from torchvision import datasets, transforms
# Compose a set of transforms to use later on
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
# Load in the MNIST dataset
trainset = datasets.MNIST(
'mnist_train',
train=True,
download=True,
transform=transform
)
# Create a data loader
trainloader = torch.utils.data.DataLoader(
trainset,
batch_size=64,
shuffle=True
)
# Get a pre-trained ResNet18 model
model = torchvision.models.resnet18(False)
# Change the first layer to accept grayscale images
model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
# Get the first batch from the data loader
images, labels = next(iter(trainloader))
# Write the data to TensorBoard
grid = torchvision.utils.make_grid(images)
writer.add_image('images', grid, 0)
writer.add_graph(model, images)
writer.close()
运行此程序后,转到 TensorBoard 并查看保存的输出。
六、Tensorboard自己使用(摸索状态,慢慢更新使用细节)
1、初次使用tensorboard绘制loss和acc曲线出现时间线错乱的情况如下图:
很大一个原因可能是在一个文件夹下有多个log文件一块显示了,删掉试试
使用时间戳,每一次运行会建立对应时间的log文件,这样不会在一个文件夹中出现多个log文件,方便查看,参考链接
# TensorBoard
project_path = "F:\py_project_professional\dxp_project\Rsenet34_curvature classification"
name = "ResNet34_result"
tb_writer_summary_path = os.path.join(project_path, "run", name, "Logs")
current_time = time.strftime("%Y%m%d-%H%M%S", time.localtime())
log_dir = os.path.join(tb_writer_summary_path, current_time)
tb_writer = SummaryWriter(log_dir=log_dir, comment=name)
# # 于将训练过程中的各种信息写入 TensorBoard 日志文件,以便进行可视化和分析。
# # log_dir:用于指定 TensorBoard 日志文件的保存路径,即 tb_writer_summary_path 变量所指定的路径。
# # comment:一个可选的字符串,用于为日志文件添加一个注释,可以用于区分不同的日志文件。
# # 在这里,该参数指定了一个名为 args.name 的注释,该值可能是从命令行参数中传递过来的。
# # parser.add_argument('--name', type=str, default='case5_result')
效果大概就是下图这样
五级标题
参考链接
TensorBoard最全使用教程:看这篇就够了:https://zhuanlan.zhihu.com/p/471198169
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj