tensorboard是探究模型在不同阶段是如何进行输出的一种非常有效的工具
主要类的使用:SummaryWriter
首先是导包:
from torch.utils.tensorboard import SummaryWriter
在Pycharm中查看类的说明方法简介:
方法1(常用):按住Ctrl键,注意一定是按住了,不要松开,然后鼠标移动到待查看的类,然后点击它
如图所示,出现高亮后点击此类
方法2:在python控制台使用help()进行查看
创建实例:
writer = SummaryWriter("logs")
字符串量为事件文件想要存储到的文件的文件名
常用的类方法:
tag:标题
scalar_value:对应于图表的y轴
global_step:对应于图表的x轴
运行程序:
简单写一个y=2x的函数图表:
点击运行后注意观察左侧文件夹内容的变化:
会出现一个这个事件文件
如果运行报错:
ImportError:Tensorboard logging requires TensorBoard with Python summary writer installed
如果遇到上述图片的报错信息,则表明需安装Tensorboard包。安装方法如下 :
安装Tensorboard:
方法1:Anaconda Prompt控制台
若前缀不是(pytorch)而是(PS),点击settiing->terminal->shell path->改为cmd
如何打开事件文件:
点击一下蓝色高光的链接后会跳转到如下界面:
img_tensor:表示图像的数据类型,打开源代码可以查看可支持类型
(主要支持torch.Tensor, numpy.arry, string/blobname)
global_step:训练的步骤,为 int 类型
图片类型的转换:
首先查看图片类型:
print(type(img))
利用numpy.arry(), 对PIL图片进行转换
import numpy as np
img_arry = np.array(img)
代码中的 img 为PIL 类型的变量,img_arry用来接收numpy类型的变量
整体测试代码如下:
写到这里然后运行,会发现报错了!!!
报错原因:cannot handle this data type:(1,1,512),意思就是无法处理该种数据形式
打开add_image() 的代码文件查看发现:
注意shape 的内容:主要说明了img_tensor默认为(3,H, W)类型,“3”表示通道数,"H","W"分别表示高度和宽度,注意这三个量的顺序。后面的文档意思是也可以使用(H, W, 3)类型,但是前提条件是需要设置dataformats='HWC', C表示上述的通道数(channel),也就是说将通道数放在最后。
我们可以查看一下图片的shape来判断错误是否如此:
print(img_array.shape)
(512,768,3)表明通道数的确在最后一位,这时我们根据文档提示进行修改即可
修改代码如下:
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
writer = SummaryWriter("logs")
img_path="data/练手数据集/train/ants_image/0013035.jpg"
img_PIL=Image.open(img_path)
img_array=np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
writer.add_image("test_add_image", img_array, 1, dataformats='HWC')
for i in range(100):
writer.add_scalar("y=2x", 2*i, i)
writer.close()
测试运行成功后打开terminal: