赞
踩
一、认识他
from torch.utils.tensorboard import SummaryWriter
按住contrl可以进入summarywriter查看,有参数说明(atgues) 有例子(exemples) default(默认)
可以直接向log——dir写入文件
可以写文件地址,如果不写会按默认配置
实例
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("logs") //继承下类,像上文所述,我们填写log_dir文件夹名为“log”,一会在下方命令如add——scalar,add——img,产生的结果都会在名为”log“的文件夹里面//
writer.add_img()
writer.add_scalar() //相当于一个画图软件//
1、1我们先学add_scalar
//contrl+鼠标左键点开介绍// def add_scalar( self, tag, //一会产生图的标题名// scalar_value, //y轴的值// global_step=None, //x轴的值// walltime=None, new_style=False, double_precision=False, ): """Add scalar data to summary. //参数介绍 Args: tag (str): Data identifier scalar_value (float or string/blobname): Value to save global_step (int): Global step value to record walltime (float): Optional override default walltime (time.time()) with seconds after epoch of event new_style (boolean): Whether to use new style (tensor field) or old style (simple_value field). New style could lead to faster data loading. =//
1.2 应用
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("logs")
for i in range(100):
writer.add_scalar("y=x",i,i)
writer.close()
运行完代码发现产生一个名为log的文件夹
继续
注意下路径,我们在终端输入tensorboard --logdir=logs
想要修改端口可以输入 tensorboard --logdir=logs --port=6007
**
**
我感觉是路径的问题,使用cd命令打开logs的上级文件夹:
果然就好起来辣!!!
太酷啦!
这样就方便我们训练的时候显示损失什么的
进阶:
画个y=x²
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("logs")
for i in range(100):
writer.add_scalar("y=x²",i**2,i)
writer.close()
然后运行完代码这里可以直接刷新
这样就完成x²绘制
**
**
一般用来观察训练结果
先看下add_image()
control+左键点开看看说明
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 identifier img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data //这里注意数据类型,可以是torch.tensot,可以是numpy,或者字符串啥的。// global_step (int): Global step value to record walltime (float): Optional override default walltime (time.time()) seconds after epoch of event dataformats (str): Image data format specification of the form CHW, HWC, HW, WH, etc. Shape: img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` to convert 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 as corresponding ``dataformats`` argument is passed, e.g. ``CHW``, ``HWC``, ``HW``.
也就是对类型有要求
比如
imgine=target_dir.split('_')[1]
image_path="D:\\PyCharm\\Py_Projects\\XiaoTuDui\\datasets_jinjieP7\\train\\ants_image\\0013035.jpg"
from PIL import Image
img=Image.open(image_path)
print(type(img))
会出现img的类型属于PIL。。。。什么的不符合我们的要求
<class 'PIL.JpegImagePlugin.JpegImageFile'>
同时这里可以学一下Image.open的命令
他实实在在的传入了一张图片
我们输入img.show()是会显示我的图片的
因此我们可以用numpy转换格式
imgine=target_dir.split('_')[1] image_path="D:\\PyCharm\\Py_Projects\\XiaoTuDui\\datasets_jinjieP7\\train\\ants_image\\0013035.jpg" from PIL import Image img=Image.open(image_path) print(type(img)) 会出现img的类型属于PIL。。。。什么的不符合我们的要求 <class 'PIL.JpegImagePlugin.JpegImageFile'> //在此基础上// import numpy as np img_array=np.array(img) print(type(img_array)) <class 'numpy.ndarray'> //可以看到类型转换成了numpy//
from torch.utils.tensorboard import SummaryWriter from PIL import Image import numpy as np writer=SummaryWriter("logs") image_path="D:\\PyCharm\\Py_Projects\\XiaoTuDui\\datasets_jinjieP7\\train\\ants_image\\0013035.jpg" //设置图片绝对路径// img_PIL=Image.open(image_path) //把路径导入open。以图片形式传给Img_PIL// img_array=np.array(img_PIL) // 改变形式为np列表// writer.add_image("test" , img_array,1) for i in range(100): writer.add_scalar("y=x²",i**2,i) writer.close()
**
**
打开add——image的说明:
前面是说接收形式默认为3通道,高,宽
后面是说也可以以 高、宽、三通道 来,但是要设置dataformats参数
其中CHW:C是channel 通道 H是高度 W是宽度
我们继续看例子
from torch.utils.tensorboard import SummaryWriter import numpy as np img = np.zeros((3, 100, 100)) img[0] = np.arange(0, 10000).reshape(100, 100) / 10000 img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000 img_HWC = np.zeros((100, 100, 3)) img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000 writer = SummaryWriter() writer.add_image('my_image', img, 0) # If you have non-default dimension setting, set the dataformats argument. writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')// !!!!注意此处是关键,这里设置了dataformats HWC// writer.close()
***这里实用命令。“,shape”***可以方便看图片的形式(通道,高,宽)及顺序
image_path="D:\\PyCharm\\Py_Projects\\XiaoTuDui\\datasets_jinjieP7\\train\\ants_image\\0013035.jpg"
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)
print(img_array.shape)
结果 (512, 768, 3)显然是 高 宽 通道形的
那我们补全代码
from torch.utils.tensorboard import SummaryWriter from PIL import Image import numpy as np writer=SummaryWriter("logs") image_path="D:\\PyCharm\\Py_Projects\\XiaoTuDui\\datasets_jinjieP7\\train\\ants_image\\0013035.jpg" img_PIL=Image.open(image_path) img_array=np.array(img_PIL) print(img_array.shape) writer.add_image("test" , img_array,1,dataformats='HWC') //这里添加了HWC// //!!!另外前面那个数字1的意思是step1,一会会在图片显现出来// for i in range(100): writer.add_scalar("y=x²",i**2,i) writer.close()
然后我们从终端cd XiaoTuDui输入tensorboard --logdir=logs
打开网页
就有了这个可以看到step1
进阶
我们可以再加入一个密蜜蜂
from torch.utils.tensorboard import SummaryWriter from PIL import Image import numpy as np writer=SummaryWriter("logs") image_path="D:\\PyCharm\\Py_Projects\\XiaoTuDui\\datasets_jinjieP7\\train\\bees_image\\16838648_415acd9e3f.jpg" //这里换了下位置// img_PIL=Image.open(image_path) img_array=np.array(img_PIL) print(img_array.shape) writer.add_image("test" , img_array,2,dataformats='HWC') //这里step填了2// for i in range(100): writer.add_scalar("y=x²",i**2,i) writer.close()
我们来看效果
因为在同一个标题”test“下面,所以他俩依据step分了先后,可以用鼠标拖动。
小结感觉tensorboard像一个本地服务器,可以检查图片、数据
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。