当前位置: 首页 > news >正文

[pytorch入门] 2. tensorboard

tensorboard简介

TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中.但是也可以独立安装,服务Pytorch等其他的框架
可以常常用来观察训练过程中每一阶段如何输出的

  • 安装
    pip install tensorboard
    
  • 启动
    tensorboard --logdir=<directory_name>
    
    会默认在6006端口打开,也可以自行制定窗口,如:
    tensorboard --logdir=logs --port=6007
    

用法

  1. 所在类:
    from torch.utils.tensorboard import SummaryWriter
    
    介绍:
    class SummaryWriter:"""Writes entries directly to event files in the log_dir to beconsumed by TensorBoard.The `SummaryWriter` class provides a high-level API to create an event filein a given directory and add summaries and events to it. The class updates thefile contents asynchronously. This allows a training program to call methodsto add data to the file directly from the training loop, without slowing downtraining."""
    
  2. 创建对象
    writer = SummaryWriter('logs') # 说明写入哪个文件夹
    
  3. 常用方法
    writer.add_image()   # 图像方式
    writer.add_scalar()  # 坐标方式writer.close()  # 使用完之后需要close
    

add_scalar()

    def add_scalar(self,tag,scalar_value,global_step=None,walltime=None,new_style=False,double_precision=False,):"""Add scalar data to summary.添加标量数据到summary中Args:tag (str): Data identifier 图表标题scalar_value (float or string/blobname): Value to save 数值(y轴)global_step (int): Global step value to record 训练到多少步(x轴)walltime (float): Optional override default walltime (time.time())with seconds after epoch of eventnew_style (boolean): Whether to use new style (tensor field) or oldstyle (simple_value field). New style could lead to faster data loading.Examples::from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter()x = range(100)for i in x:writer.add_scalar('y=2x', i * 2, i)writer.close()Expected result:.. image:: _static/img/tensorboard/add_scalar.png:scale: 50 %"""

注意:向writer中写入新事件的同时她也会保留上一个事件,这就会导致一些拟合出现问题
解决:删除之前的log文件,重新生成

add_image()

def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"):"""Add image data to summary.Note that this requires the ``pillow`` package.Args:tag (str): Data identifierimg_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data 注意数据的类型global_step (int): Global step value to record后面不用管walltime (float): Optional override default walltime (time.time())seconds after epoch of eventdataformats (str): Image data format specification of the formCHW, HWC, HW, WH, etc.Shape:img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` toconvert a batch of tensor into 3xHxW format or call ``add_images`` and let us do the job.Tensor with :math:`(1, H, W)`, :math:`(H, W)`, :math:`(H, W, 3)` is also suitable as long ascorresponding ``dataformats`` argument is passed, e.g. ``CHW``, ``HWC``, ``HW``."""

实践

如在tensorboard中展示图片:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Imagewriter = SummaryWriter('logs')
image_path = './dataset2/train/ants_image/0013035.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)writer.add_image("test",img_array,1,dataformats='HWC') # 展示读取的图片for i in range(100):writer.add_scalar('y=2x', 3*i, i)     # 绘图writer.close()
  • writer.add_image中的参数

    def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"):
    

    名称、图形向量(ndarray类型),第几步(是滑动翻页那种的,这里相当于设定是第几页,每次向后设定时不会清除原来的数据)

当前代码效果如图:
在这里插入图片描述
修改图片后:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Imagewriter = SummaryWriter('logs')
image_path = './dataset2/train/ants_image/5650366_e22b7e1065.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)# 这里更新,说明为第二步
writer.add_image("test",img_array,2,dataformats='HWC')for i in range(100):writer.add_scalar('y=2x', 3*i, i)writer.close()

拖拉就会发现有两张图
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 【字节二面算法题】84. 柱状图中最大的矩形
  • gin渲染篇
  • 算法训练营Day51(动态规划12)
  • 【MySQL】如何通过DDL去创建和修改员工信息表
  • 架构师之路(十六)计算机网络(传输层)
  • 【Web前端实操13】实现100*100的盒子的阴影效果,阴影值自拟
  • 【Web前端开发基础】前端基础布局之百分比布局、flex布局
  • 跟无神学AI之Prompt
  • Excel·VBA时间范围筛选及批量删除整行
  • Flink状态应用测试程序示例
  • 面向社交网络语言隐写分析
  • jquery多选框
  • SIFT图像特征表述
  • IP组播地址
  • 2401llvm,clang的重构引擎
  • $translatePartialLoader加载失败及解决方式
  • [deviceone开发]-do_Webview的基本示例
  • Akka系列(七):Actor持久化之Akka persistence
  • centos安装java运行环境jdk+tomcat
  • echarts的各种常用效果展示
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript设计模式与开发实践系列之策略模式
  • JAVA并发编程--1.基础概念
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Python - 闭包Closure
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 从零开始在ubuntu上搭建node开发环境
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 判断客户端类型,Android,iOS,PC
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端代码风格自动化系列(二)之Commitlint
  • 微信支付JSAPI,实测!终极方案
  • 正则学习笔记
  • 阿里云服务器购买完整流程
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (1)(1.11) SiK Radio v2(一)
  • (Python) SOAP Web Service (HTTP POST)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (循环依赖问题)学习spring的第九天
  • (转)程序员技术练级攻略
  • .NET Core Web APi类库如何内嵌运行?
  • .net 设置默认首页
  • .NET/C# 使窗口永不获得焦点
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @DataRedisTest测试redis从未如此丝滑
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [ C++ ] STL---string类的使用指南
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——