TensorBoard的使用

TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件。TensorBoard目前支持7种可视化,Scalars,Images,Audio,Graphs,Distributions,Histograms和Embeddings。其中可视化的主要功能如下。

(1)Scalars:展示训练过程中的准确率、损失值、权重/偏置的变化情况。

(2)Images:展示训练过程中记录的图像。

(3)Audio:展示训练过程中记录的音频。

(4)Graphs:展示模型的数据流图,以及训练在各个设备上消耗的内存和时间。

(5)Distributions:展示训练过程中记录的数据的分部图。

(6)Histograms:展示训练过程中记录的数据的柱状图。

(7)Embeddings:展示词向量后的投影分部

在tensorboard中的SummaryWriter(pc中按住ctrl点击SummaryWriter查看)类的介绍

大概意思是,这个类是向log——dir写入日志文件,对tensorboard进行解析。

后面还有他的使用说明

开始使用

添加实例

writer = SummaryWriter("logs")

是使用两个添加方法

writer.add_image()
writer.add_scalar()

最后关闭文件

writer.close()

(1)writer.add_scalar()方法的使用

首先使用使用ctrl+/注释add_image()

 打开说明

"""Add scalar data to summary.

        Args:
            tag (string): 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.
        Examples::

            from torch.utils.tensorboard import SummaryWriter
            writer = SummaryWriter()
            x = range(100)
            for i in x:
                writer.add_scalar('y=2x', i * 2, i)
            writer.close()

        Expected result:

        .. image:: _static/img/tensorboard/add_scalar.png
           :scale: 50 %

        """

参数:tag:图表的标题

scalar_value :对应数值(y轴)
global_step (int):训练到多少步(x轴)

例如我们尝试画出y=x的图像

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

# writer.add_image()
#y=x
for i in range(100):
    writer.add_scalar("y=x",i,i)

writer.close()

就会在log文件夹下生成一个日志文件

打开这个日志文件

在终端(当前文件夹下)中输入命令行

tensorboard --logdir=logs

 

 可以打开进入这个服务器打开

也可使指定这个窗口 防止与别人冲突

tensorboard --logdir=logs --port=6007

选择端口名为6007

点击连接就可以打开这个文件了

 如果你再加载y=2x的函数 可能会出现过拟合的情况 

 想要解决这个问题你可以删除log中的文件,重新加载

官方的建议是你可以建立一个子文件存储新的函数日志

 (2)add_image()的使用(观察训练结果)

打开说明

 """Add image data to summary.

        Note that this requires the ``pillow`` package.

        Args:
            tag (string): Data identifier
            img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
            global_step (int): Global step value to record
            walltime (float): Optional override default walltime (time.time())
              seconds after epoch of event

tag:标题

img_tensor (torch.Tensor, numpy.array, or string/blobname):图像数据(y轴)

global_step:x轴

使用:

打开python控制器设置他的图片地址

 

导入Image包

 读取图片类型看是否满足输入图片的要求

img=Image.open(image_path)

右边显示出图片的格式为PIL型

 不满足输入的要求

(3)利用opencv读取图片获得numpy型图片数据

安装opencv-python后导入numpy包

import numpy as np

 将img的PIL转换为np类型

img_array=np.array(img)

打印其类型 已经变成array型

 

开始写代码

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import  Image
writer = SummaryWriter("logs")
image_path="data/train/ants_image/0013035.jpg"
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)
print(type(img_array))

writer.add_image("test",img_array,1)
#y=x
for i in range(100):
    writer.add_scalar("y=2x",2*i,i)

writer.close()

运行出现错误

TypeError: Cannot handle this data type: (1, 1, 512), |u1

打开说明 查看到对于add_image有尺寸的说明

 默认的是【3通道,高度,宽度 】如果是【高度,宽度,3】也可以但是需要设置dataformats

例如 

 也是使用的np类型的,他的dataformats='HWC'

我们先看一下img_array的格式

print(img_array.shape)

 属于第二种情况

更改代码为

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import  Image
writer = SummaryWriter("logs")
image_path="data/train/ants_image/0013035.jpg"
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)
print(type(img_array))
print(img_array.shape)

writer.add_image("test",img_array,1,dataformats='HWC')
#y=x
for i in range(100):
    writer.add_scalar("y=2x",2*i,i)

writer.close()

 在终端输入

tensorboard --logdir=logs --port=6007

点击链接  再点击左上角的images就出现了图像了

 

如果想再添加蜜蜂 修改地址 将 add_image的步骤改为2

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import  Image
writer = SummaryWriter("logs")
image_path="data/train/bees_image/16838648_415acd9e3f.jpg"
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)
print(type(img_array))
print(img_array.shape)

writer.add_image("test",img_array,2,dataformats='HWC')
#y=x
for i in range(100):
    writer.add_scalar("y=2x",2*i,i)

writer.close()

 拖动就可以实现步骤1和步骤2的转换了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值