TensorBoard的认识和使用

实例化一个SummaryWrite类:TensorBoard是什么?

TensorBoard是Tensorflow的可视化工具,提供机器学习实验所需的功能和工具,例如可以跟踪和可视化损失集准确率等指标;可视化模型图(包括操作和层);可以查看权重、偏差或者其他张量随时间的变化的直方图;可以显示图片、文字和音频数据、剖析TensorFlow程序等等

我们要使用TensorBoard首先先认识一个SummaryWrite的类,该类可以在指定文件夹生成一个事件文件,这个事件文件可以对TensorBoard解析。

如何打开TensorBoard:我们在终端进行打开,输入以下代码:

tensorboard --logdir="事件文件夹所在位置" #在写的时候不加""

打开后,就可以在 http://localhost:6006/看到可视化界面。

我们要实际的去完成一个图像的操作,首先要实例化SummaryWrite类,生成一个新的事件文件

from  torch.utils.tensorboard import SummaryWriter
#logs为事件文件夹
writer = SummaryWriter("logs")

使用TensorBoard可视化一个图片:ps(该路径为相对路径)

#图片所在路径
image_path = "data/train/ants_image/6743948_2b8c096dda.jpg"

在具体去操作一个数据集之前,我们先要了解一个python库PIL(Python Imaging Library),是 Python 平台一个功能非常强大而且简单易用的图像处理库。在这里我们使用到一个打开图像的功能。

img_PIL = Image.open(image_path)

由于我们使用的Summarywrite中的img函数,该函数限制只能使用某些固定类型,官方解释如下

    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 (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
            dataformats (string): 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``.

使用如下代码,将jpeg格式的tupian改成numpy类型:

img_array = np.array(img_PIL)

剩下的就是显示一张图片:

#在TensorBoard中写入
writer.add_image("train", img_array, 2, dataformats='HWC')

#关闭
writer.close()

在此处如果不修改datafirmats=“HWC”程序运行会报错,因为图片的shape要和我们的参数一致,HWC分别是高宽和通道数。

完整代码如下:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
#logs为事件文件夹
writer = SummaryWriter("logs")
#图片所在路径
image_path = "data/train/ants_image/6743948_2b8c096dda.jpg"
#使用PIL库操作图片
img_PIL = Image.open(image_path)
#img_tensor的类别只能是torch.Tensor, numpy.array
#修改图片的格式为numpy类型
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
#在TensorBoard中写入
writer.add_image("train", img_array, 2, dataformats='HWC')

#关闭
writer.close()

你可能感兴趣的:(人工智能,深度学习,tensorflow)