8-9 TensorBoard的使用

一、安装TensorBoard

要与自己的项目的cuda,torch,tensorflow的版本匹配
在对应项目的虚拟环境中,输入以下命令:

pip install tensorboard==1.15.0

安装成功:
image

二、Tensorboard的使用

应用:查看loss; 显示具体哪一步的output

  1. 在对应虚拟环境下的项目中创建文件
  2. SummaryWriter类
from torch.utils.tensorboard import SummaryWriter

导入 torch.utils.tensorboard时 找不到tensorboard
原理:torch的版本比较低
第二种解决方法:

pip install --upgrade torch
pip install --upgrade tensorboard
pip install future

需要加载一会儿,才能显示出来

  1. 查看SummaryWriter类
  • 按住ctrl+类 打开

  • 查看功能:会向log_dir中写一个事件文件,并且这个事件文件可以被TensorBoard解析

  • 查看类中的函数:
    初始化函数
    image

  • 查看函数的使用方法的案例:
    image

  1. add_scalar()及add_scalars()
  • 函数功能
    image
    add_scalars():x轴对应多个y值

  • 对应x轴,y轴
    第一个参数:生成图像的名称
    第二个参数:y轴
    第三个参数:x轴
    image

  • 案例
    add_scalar():
    image

add_scalars():

sw.add_scalars('loss', {'lossb1':lossb1.item(), 'lossd1':lossd1.item(), 'loss1':loss1.item(), 'lossb2':lossb2.item(), 'lossd2':lossd2.item(), 'loss2':loss2.item()}, global_step=global_step)
  1. 打开tensorboard的文件
  • logdir=事件文件所在文件夹
tensorboard --logdir=logs

image

  • 修改打开的网址
tensorboard --logdir=logs --port=6007

image

  • 实验中遇到的报错:

打不开终端

版本不匹配

cuda版本要对应

#Installing with CUDA 9

conda install pytorch=0.4.1 cuda90 -c pytorch

TensorBoard logging requires TensorBoard version 1.15 or above

pip install tensorboard==1.15.0

网页无法打开

tensorboard --logdir=文件夹路径 --host=127.0.0.1

最终打开文件:
image

  1. add_image()方法
    image

image

控制台查看数据类型:

image_path="dataset/train/ants/0013035.jpg"
from PIL import Image
img=Image.open(image_path)
print(type(img))

image

发现不是方法中的数据类型,需要进行转换
图像处理——PIL、OpenCV和numpy表示图像数据格式的相互转换

  • opencv将图片转化为numpy
import cv2
img_cv=cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
print(type(img_cv))

image

  • 直接用numpy转化
import numpy as np
img_array=np.array(img)
print(type(img_array))

image

版本号:cuda9.1 torch 0.4.0 tensorflow-gpu 1.7.0 tensorboard 1.15.0

三、代码和实验结果

  1. 实验一
点击查看代码
from torch.utils.tensorboard import SummaryWriter

#对类实例化
writer=SummaryWriter("logs") #指定文件夹

# #添加image
# writer.add_image()
#添加数
#y=2x
for i in range(100):
    writer.add_scalar("y=2x",2*i,i)
##y=x*x
#for i in range(100):
#    writer.add_scalar("y=x*x",i*i,i)
#关闭
writer.close()
  • 先删除之前logs下的文件,再运行,不然会显示出现问题,不删除就是之前运行的都会输出
  • 在terminal输入命令,更改显示地址
tensorboard --logdir=logs --host=127.0.0.1
  • 运行结果:

image

  1. 实验二
  • 将图片转换为numpy
  • 指定图片的格式

image

  • 代码执行
from torch.utils.tensorboard import SummaryWriter
import numpy as np #将图片转换为numpy
from PIL import Image


#对类实例化
writer=SummaryWriter("logs") #指定文件夹
# image_path="dataset_label/train/ants_image/0013035.jpg"  #下面轮数为1
image_path="dataset_label/val/bees/6a00d8341c630a53ef00e553d0beb18834-800wi.jpg" #下面轮数为2
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
# #添加image
writer.add_image("test",img_array,2,dataformats='HWC')#参数:名称,图片,执行的轮数,指定格式

#关闭
writer.close()
  • 执行结果

image

使用验证集的图片,step=2,执行效果:
image

3.实验三

  • 代码
点击查看代码
import numpy as np
from torch.utils.tensorboard import SummaryWriter  # 也可以使用 tensorboardX
# from tensorboardX import SummaryWriter  # 也可以使用 pytorch 集成的 tensorboard

writer = SummaryWriter()
for epoch in range(100):
    writer.add_scalar('add_scalar/squared', np.square(epoch), epoch)
    writer.add_scalars("add_scalars/trigonometric", {'xsinx': epoch * np.sin(epoch/5), 'xcosx': epoch* np.cos(epoch/5), 'xtanx': np.tan(epoch/5)}, epoch)

writer.close()

  • 效果图

image

  • 生成的文件

image

  • 运行代码
tensorboard --logdir=runs --host=127.0.0.1

posted @ 2022-05-10 13:46  Trouvaille_fighting  阅读(633)  评论(0)    收藏  举报