当前位置: 首页 > 科技观察

PyTorch可视化工具:TensorBoard、Visdom

时间:2023-03-12 03:16:14 科技观察

1.TensorBoardTensorBoard一般作为TensorFlow的可视化工具,与TensorFlow深度集成。可以展示TensorFlow网络计算图,绘制图像生成的量化指标图,附加数据。此外,TensorBoard也是一个独立的工具,也可以用于PyTorch中的可视化。1、安装:pipinstalltensorboard2、启动:tensorboard--logdir="logdirectory"启动tensorboard时,可以指定logdir、端口(默认6006)、host(默认localhost)等参数:usage:tensorboard[-h][--helpfull][--logdirPATH][--logdir_specPATH_SPEC][--hostADDR][--bind_all][--portPORT][--purge_orphaned_dataBOOL][--dbURI][--db_import][--inspect][--version_tb][--tagTAG][--event_filePATH][--path_prefixPATH][--window_titleTEXT][--max_reload_threadsCOUNT][--reload_intervalSECONDS][--reload_taskTYPE][--reload_multifileBOOL][--reload_multifile_inactive_secsSECONDS][--generic_dataTYPE][--samples_per_pluginSAMPLES_PER_PLUGIN][--debugger_data_server_grpc_port][--debugger_port][--master_tpu_unsecure_channelADDR]3。Tensorboard可视化演示(PyTorch框架):训练模型,导入tensorboard。SummaryWriter保存loss、accuracy等日志。#ImportSummaryWriterfromtorch.utils.tensorboardimportSummaryWriter...#创建SummaryWriter实例,指定log_dir所在位置summaryWriter=SummaryWriter(log_dir="/Users/liyunfei/PycharmProjects/python3practice/06DL/fcnn/logs")...#Duringmodel训练,写入train_loss、test_loss、score等信息summaryWriter.add_scalars("loss",{"train_loss_avg":train_loss_avg,"test_loss_avg":test_loss_avg},epoch)summaryWriter.add_scalar("score",score,epoch)开始TensorBoar,培训过程可视化。1)启动命令:tensorboard--logdir=/Users/liyunfei/PycharmProjects/python3practice/06DL/fcnn/logs2)启动成功如图:3)可视化结果如下:2.VisdomVisdom是一个Facebook专门为PyTorch开发的可视化工具,可以实现“远程数据”的可视化,支持Torch和Numpy。github地址:https://github.com/fossasia/visdom1,安装:pipinstallvisdom2,启动:python-mvisdom.server-m是模块服务启动的如果是linux/mac-os环境,可以使用以下命令启动后台运行nohuppython-mvisdom.server&启动Visdom时,可以指定端口(默认8097)、主机名(默认localhost)等参数:usage:server.py[-h][-portport][--hostnamehostname][-base_urlbase_url][-env_pathenv_path][-logging_levellogger_level][-readonly][-enable_login][-force_new_cookie][-use_frontend_client_polling]3.Visdom可视化演示1)启动Visdom:python-mvisdom.server-port80972)启动成功如下:3)训练过程可视化代码:#importvisdompackageimportvisdom#创建一个Visdom对象,连接服务器,指定env环境(不指定默认env="main")viz=visdom.Visdom(server='http://localhost',port=8097,env='liyunfei')...viz.line([0.],[0],win='train_loss',opts=dict(title='train_loss'))viz.line([0.],[0],win='accuracy',opts=dict(title='accuracy'))...#模型训练期间,loss,accuracy等信息的实时可视化。viz.line([train_loss_avg],[epoch],win='train_loss',update='append')viz.line([accuracy],[epoch],win='accuracy',update='append')4)可视化结果:5)其他操作——可视化一张/多张图片:例子:importvisdomimportnumpyasnpviz=visdom.Visdom(server='http://localhost',port=8097,env='liyunfei')#一张图片viz.image(np.random.rand(3,512,256),opts=dict(title='Random!',caption='Howrandom.'),)#多张图片viz.images(np.random.randn(20,3,64,64),nrow=5,opts=dict(title='Randomimages',caption='Howrandom.'))作用:6)Visdom的更多可视化API(常用的是line,image,text):vis.scatter:2D或3D散点图vis.line:折线图vis.stem:茎叶图vis.heatmap:热图vis.bar:条形图vis.histogram:直方图vis.boxplot:箱形图vis.surf:surfacemapvis.contour:contourmapvis.quiver:绘制二维向量场vis.image:picturevis.text:textvis.mesh:gridmapvis.save:序列化状态