8-9 TensorBoard的使用
一、安装TensorBoard
要与自己的项目的cuda,torch,tensorflow的版本匹配
在对应项目的虚拟环境中,输入以下命令:
pip install tensorboard==1.15.0
安装成功:

二、Tensorboard的使用
应用:查看loss; 显示具体哪一步的output
- 在对应虚拟环境下的项目中创建文件
- SummaryWriter类
from torch.utils.tensorboard import SummaryWriter
导入 torch.utils.tensorboard时 找不到tensorboard
原理:torch的版本比较低
第二种解决方法:
pip install --upgrade torch
pip install --upgrade tensorboard
pip install future
需要加载一会儿,才能显示出来
- 查看SummaryWriter类
-
按住ctrl+类 打开
-
查看功能:会向log_dir中写一个事件文件,并且这个事件文件可以被TensorBoard解析
-
查看类中的函数:
初始化函数

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

- add_scalar()及add_scalars()
-
函数功能

add_scalars():x轴对应多个y值 -
对应x轴,y轴
第一个参数:生成图像的名称
第二个参数:y轴
第三个参数:x轴

-
案例
add_scalar():

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)
- 打开tensorboard的文件
- logdir=事件文件所在文件夹
tensorboard --logdir=logs

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

- 实验中遇到的报错:
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
最终打开文件:

- add_image()方法


控制台查看数据类型:
image_path="dataset/train/ants/0013035.jpg"
from PIL import Image
img=Image.open(image_path)
print(type(img))

发现不是方法中的数据类型,需要进行转换
图像处理——PIL、OpenCV和numpy表示图像数据格式的相互转换
- opencv将图片转化为numpy
import cv2
img_cv=cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
print(type(img_cv))

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

版本号:cuda9.1 torch 0.4.0 tensorflow-gpu 1.7.0 tensorboard 1.15.0
三、代码和实验结果
- 实验一
点击查看代码
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
- 运行结果:

- 实验二
- 将图片转换为numpy
- 指定图片的格式

- 代码执行
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()
- 执行结果

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

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()
- 效果图

- 生成的文件

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

浙公网安备 33010602011771号