找回密码
 会员注册
查看: 33|回复: 0

TensorBoard最全使用教程:看这篇就够了

[复制链接]

3

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2024-9-10 10:37:47 | 显示全部楼层 |阅读模式
TensorBoard最全使用教程:看这篇就够了前言靠,天天学,天天学,就是一个工具人!!!一、什么是TensorBoard?二、如何安装TensorBoard三、如何查看是否安装TensorBoard三、启动TensorBoard(仅仅是启动)四、TensorBoard仪表板都有哪些玩意(前四个对于cv来说用的比较多)1、TensorBoardScalars2、TensorBoardImages3、TensorBoardGraphs4、TensorBoardDistributionsandHistograms分布和直方图5、TEXT五、将TensorBoard与PyTorch结合使用六、Tensorboard自己使用(摸索状态,慢慢更新使用细节)1、初次使用tensorboard绘制loss和acc曲线出现时间线错乱的情况如下图:五级参考链接前言靠,天天学,天天学,就是一个工具人!!!机器学习通常涉及在训练期间可视化和度量模型的性能。有许多工具可用于此任务。在本文中,我们将重点介绍TensorFlow的开源工具套件,称为TensorBoard,虽然他是TensorFlow的一部分,但是可以独立安装,并且服务于Pytorch等其他的框架。一、什么是TensorBoard?TensorBoard是一组用于数据可视化的工具。它包含在流行的开源机器学习库Tensorflow中。TensorBoard的主要功能包括:可视化模型的网络架构跟踪模型指标,如损失和准确性等检查机器学习工作流程中权重、偏差和其他组件的直方图显示非表格数据,包括图像、文本和音频将高维嵌入投影到低维空间TensorBoard算是包含在TensorFlow中的一个子服务。TensorFlow库是一个专门为机器学习应用程序设计的开源库。GoogleBrain于2011年构建了较早的DistBelief系统。随着其用户群的快速增长,它被简化并重构为我们现在称为Tensorflow的库。TensorFlow随后于2015年向公众发布。TensorBoard刚出现时只能用于检查TensorFlow的指标和TensorFlow模型的可视化,但是后来经过多方的努力其他深度学习框架也可以使用TensorBoard的功能,例如Pytorch已经抛弃了自家的visdom(听到过这个名字的人应该都不多了吧)而全面支持TensorBoard。二、如何安装TensorBoardTensorBoard包含在TensorFlow库中,所以如果我们成功安装了TensorFlow,我们也可以使用TensorBoard。要单独安装TensorBoard可以使用如下命令:pipinstalltensorboard1需要注意的是:因为TensorBoard依赖Tensorflow,所以会自动安装Tensorflow的最新版三、如何查看是否安装TensorBoard打开pycharm,在pythonConsole中输入以下代码:fromtorch.utils.tensorboardimportSummaryWriter1如不提示错误,则安装成功,若提示以下错误:TensorBoardloggingrequiresTensorBoardversion1.15orabove1三、启动TensorBoard(仅仅是启动)要启动TensorBoard,打开终端或命令提示符并运行:1、首先进入你运行代码的环境2、然后使用下面这条命令,路径是log文件的上一个目录,你如下面这个的是flower_experment的(相对)路径(如果显示说找不到数据啥的,直接使用绝对路径一般就能解决)一系列tensorboard错误以及解决方法:tensorboard--logdir=1举个例子(相对路径更好用):将directory_name标记替换为保存数据的目录。默认是“logs”。运行此命令后,我们将看到以下提示:ServingTensorBoardonlocalhost;toexposetothenetwork,useaproxyorpass–bind_allTensorBoard2.2.0athttp://localhost:6006/(PressCTRL+Ctoquit)1这说明TensorBoard已经成功上线。我们可以用浏览器打开http://localhost:6006/查看。当页面打开时,我们将看到如下大概内容(因为没训练几轮,所以这个参数没什么变化):四、TensorBoard仪表板都有哪些玩意(前四个对于cv来说用的比较多)TensorBoard仪表板由用于可视化数据的不同组件组成。我们将研究几个常用的组件。上面的图只是部分可视化功能,全部可视化功能还有很多很多,如下:1、TensorBoardScalars机器学习过程需要跟踪与模型性能相关的不同指标。这对于快速发现问题并确定模型是否过度拟合等非常重要。使用TensorBoard的ScalarsDashboard,可以可视化这些指标并更轻松地调试模型。第一个示例,在MNIST数据集上绘制模型的损失和准确性,使用的就是Scalars。Scalars这个面板是最最长常用的面板,主要用于将神经网络训练过程中的acc(训练集准确率)val_acc(验证集准确率),loss(损失值),weight(权重)等等变化情况绘制成折线图。它左边有一些参数设置:Ignoreoutlinesinchartscaling(忽略图表缩放中的轮廓),可以消除离散值p1:是否显示数据下载链接。p2:图表平滑过程中是否忽略异常点。p3:控制每个run点信息的显示顺序。p4:代表平滑系数,值越大平滑越多。p5:横坐标刻度值。STEP:默认选项,横轴显示的是训练迭代次数。RELATIVE:这个相对指的是相对时间,相对于训练开始的时间,也就是说训练用时,单位是小时。WALL:指训练的绝对时间。p6:选择要显示的内容,此处支持正则表达式。p7:查看大图。p8:是否对y轴进行对数化处理。p9:如果拖动或缩放了坐标轴,点击后回到原始位置。p10:下载显示的数据。补充:在标量图中拉一个矩形,则把矩形内的数据放大展示。2、TensorBoardImages在处理图像数据时,如果希望查看数据查找问题,或者查看样本以确保数据质量,则可以使用TensorBoard的ImageSummaryAPI。3、TensorBoardGraphs所有模型都可以看作是一个计算图。有时很难通过单独查看代码来了解模型的体系结构。对其进行可视化可以很容易看到模型的结构,也能够确保使用的架构是我们想要或设计的。其实就是可以查看模型结构4、TensorBoardDistributionsandHistograms分布和直方图TensorBoard分布和直方图是跟踪模型另一种好方法。使用官方提供的回调,在训练后TensorBoard上会显示几个选项。如果我们转到Distributions选项卡,将看到如下图:这组图表显示了构成模型的张量。在每个图的水平轴上显示epoch数,在垂直轴上显示了每个张量的值。这些图表基本上显示了这些张量如何随着训练的进行而随时间变化。较暗的区域显示值在某个区域停留了更长的时间(没更新)。如果担心模型权重在每个epoch都没有正确更新,可以使用此选项发现这些问题。我们在Histograms选项上看到了一组不同的图表,它们表示模型的张量。这些图显示了模型中张量的不同视图。每个图都有五个相互堆叠的直方图,代表训练过的五个epoch中的每一个。它们显示了张量权重倾向于集中在哪个区域的信息。这对于调试模型的行为,发现异常非常有用。5、TEXT文本是创建机器学习模型时常用的数据类型。很多时候,很难将文本数据可视化。TensorBoard可以使用TextSummaryAPI轻松地可视化文本数据。让我们看看它是如何工作的。TensorBoar的Text选项卡中输入的文本。五、将TensorBoard与PyTorch结合使用PyTorch是另一个深受研究人员欢迎的深度学习框架。PyTorch现在也已经支持TensorBoard了。在使用TensorFlow时,使用SummaryAPI创建了将数据记录到logdir文件夹的对象。在使用PyTorch时,官方也提供了类似的API。#Importthesummarywriterfromtorch.utils.tensorboardimportSummaryWriter#Createaninstanceoftheobjectwriter=SummaryWriter()123这样就可以使用与TensorFlow相同的方式处理的相同MNIST数据集。(这只是示例代码,并不能运行)importtorchimporttorchvisionfromtorchvisionimportdatasets,transforms#Composeasetoftransformstouselaterontransform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,))])#LoadintheMNISTdatasettrainset=datasets.MNIST('mnist_train',train=True,download=True,transform=transform)#Createadataloadertrainloader=torch.utils.data.DataLoader(trainset,batch_size=64,shuffle=True)#Getapre-trainedResNet18modelmodel=torchvision.models.resnet18(False)#Changethefirstlayertoacceptgrayscaleimagesmodel.conv1=torch.nn.Conv2d(1,64,kernel_size=7,stride=2,padding=3,bias=False)#Getthefirstbatchfromthedataloaderimages,labels=next(iter(trainloader))#WritethedatatoTensorBoardgrid=torchvision.utils.make_grid(images)writer.add_image('images',grid,0)writer.add_graph(model,images)writer.close()123456789101112131415161718192021222324252627282930313233343536373839运行此程序后,转到TensorBoard并查看保存的输出。六、Tensorboard自己使用(摸索状态,慢慢更新使用细节)1、初次使用tensorboard绘制loss和acc曲线出现时间线错乱的情况如下图:很大一个原因可能是在一个文件夹下有多个log文件一块显示了,删掉试试使用时间戳,每一次运行会建立对应时间的log文件,这样不会在一个文件夹中出现多个log文件,方便查看,参考链接#TensorBoardproject_path="F:\py_project_professional\dxp_project\Rsenet34_curvatureclassification"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')12345678910111213效果大概就是下图这样五级参考链接TensorBoard最全使用教程:看这篇就够了:https://zhuanlan.zhihu.com/p/471198169
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-5 09:30 , Processed in 0.727014 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表