当前位置:   article > 正文

P7 tensorboard使用 小土堆(summarywriter)_tensorboard summarywriter不创建上级文件夹

tensorboard summarywriter不创建上级文件夹

一、认识他

from torch.utils.tensorboard import SummaryWriter
  • 1

按住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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行完代码发现产生一个名为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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
然后运行完代码这里可以直接刷新
在这里插入图片描述
这样就完成x²绘制

**

1.2 现在我们学习add_image()

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

先看下add_image()

control+左键点开看看说明

  • 1
  • 2
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``.



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

也就是对类型有要求
比如

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'>


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

同时这里可以学一下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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

**

但是报错了。。

**
打开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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

***这里实用命令。“,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)显然是 高 宽 通道形的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

那我们补全代码

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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

然后我们从终端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()




  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

我们来看效果
在这里插入图片描述
在这里插入图片描述
因为在同一个标题”test“下面,所以他俩依据step分了先后,可以用鼠标拖动。

小结感觉tensorboard像一个本地服务器,可以检查图片、数据

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/51816
推荐阅读
  • Tomcat调优:连接并发连接实战并发处理线程调整实战配置项含义默认建议注意备注ConnectionTimeout连接超时20s减少与程序处理能力有关,处理能力越快设置短一点没关系到底多久提示请求超时maxThreads处理连... [详细]

  • 考虑按从上到下,从左到右的顺序转移,则状态中需要维护一条轮廓线..._插头dpnoi插头dpnoi引入:赛道一个n×mn\timesmn×m的棋盘,有些格子是正常的,有些格子有障碍。求经过每个正常的格子恰好一次的哈密顿回路的个数。2≤n,m... [详细]

  • 功能结构如下![功能结构目录![在这里插入图片描述](https://img-blog.csdnimg.cn/202106101131306.png?x-oss-process=image/watermark,type_ZmFuZ3poZW... [详细]

  • C++面向对象的三大特性:封装、继承、多态C++认为万事万物皆可为对象对象有其属性和行为具有相同性质的对象,可以抽象为封装在设计时,可以把属性和行为放在不同的权限下,加以控制public:公共权限,内可访问、外可访问, prote... [详细]

  • 水面漂浮物识别检测算法通过Python基于YOLOv7的深度学习模型,对现场画面进行识别检测。Yolo模型采用预定义预测区域的方法来完成目标检测,具体而言是将原始图像划分为7x7=49个网格(grid),每个网格允许预测出2个边框(boun... [详细]

  • C++中运算符::有两种作用:引用全局变量和表示类成员和命名空间。它可用于引用同名全局变量和访问类成员。c++作用运算符作用运算符作用1.引用全局变量2.用于表示类成员,命名空间c++中有::符号,叫做域运算符,这个符号有多种作... [详细]

  • RabbitMQ中,死信交换机(DLX,DeadLetterExchange)是一种用于处理无法正常消费的消息的机制。当消息在一个队列中变成死信(deadletter)之后,它可以被重新发布到另一个交换机,这个交换机就被称为死信交换机。R... [详细]

  • pdfplumber将pdf换为图片的使用方法很简单,代码也不复杂。可能较为麻烦的就是,对本地环境有一定的要求,需要安装和配置。_pythonpdf图片pythonpdf图片一、背景部分情况下,需要将PDF页面换为图片,例如PNG或... [详细]

  • 动态静态介绍目前市面上比较流行的深度学习框架主要分类两大类:动态框架和静态框架,Pytorch、TF、Caffeine等框架最大的区别就是它们拥有不同的计算表现形式。TF使用静态,意味着开发人员需要先定义计算,然后不断的使用... [详细]

  • CMAC(CipherBlockChaining-MessageAuthenticationCode),也简称为CBC_MAC,它是一种基于对称秘钥分组加密算法的消息认证码。由于其是基于“对称秘钥分组算法”的,故可以将其当做是对称算法的一种... [详细]

  • 推荐(免费):PHP7具有图形化编程才有意思,这几天看到了phpui图形扩展,只是现在只能下载php7.1的本次教程编译php7.2.6的phpui要是linux下编译起来比较简单但是windows下就麻烦些编译环境搭建php7.2.6的编... [详细]

  • (一)解决的问题:core表示式无法灵活修改,定时任务无法用数据库控制开关等问题,定时任务执行数据库相关操作需要额外写代码。(二)原理:ThreadPoolTaskScheduler线程池可以管理spring定时任务(三)思路:1一个定时... [详细]

  • 基于YOLOv7开发构建红外高空小目标检测识别分析系统关注公众号【PythonAI之路】或者加入星球【AZX_cx】继续沟通交流_yolov7添加小目标检测yolov7添加小目标检测基于yolo系列的模型开发构建红外场景下的目标检测系统,在... [详细]

  • 单阶段目标检测器能很好地平衡速度和精度,YOLO系列是其中的代表。YOLOX采用了anchor-free范式,加入了动态标签分配以提升检测表现,在TeslaV100上取得了50.1mAP,速度是68.9FPS。本文提出的PP-YOLOE为了... [详细]

  • 好学易懂从零开始插头DP前情提要上篇文章里,我们解决了一个例题,了解了,从回路模型转换到插头模型一些性质和优点。知道了只要按规则放置插头,就可以保证都是闭合回路。现在,让我们对例题做一些改变,之前是可以多个闭合回路,如果现在要求只... [详细]

  • Hibernate参数发表时间:2007年9月7日18时50分34秒评论/阅读(0/0)属性名用途hibernate.dialect一个HibernateDialect类名允许Hibernate针对特定关系数据库生成优化SQL.取值fu... [详细]

  • (2)如果PILImage属于(L,LA,P,I,F,RGB,YCbCr,RGBA,CMYK,1)中的一种图像类型,或者numpy.ndarray格式数据类型是np.uint8,则将[0,255]的数据转为[0.0,1.0],也就是说将所有... [详细]

  • 运行appfromflaskimportFlask,render_template,requestfrommysqlunitimportMySqlimportpandasaspdapp=Flask(__name__)globalrows@a... [详细]

  • 计算图模式:TensorFlow采用静态图模式,即先定义计算图然后再运行。而PyTorch采用动态图模式,即在运行时构建计算图。编程风格:TensorFlow使用静态计算图,因此通常需要先定义计算图,然后再运行。这种方式可以使TensorF... [详细]

  • 状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴。为了更好的理解状压dp,首先介绍位运算相关的知识。1.’&’符号,x&y,会将两个十进... [详细]

相关标签
  

闽ICP备14008679号