P7 tensorboard使用 小土堆(summarywriter)

一、认识他

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²绘制

**

1.2 现在我们学习add_image()

**
一般用来观察训练结果

先看下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//

1.2.1回到正题来看add_img()


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像一个本地服务器,可以检查图片、数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值