PyTorch学习第三天

要注意环境变量的配置:[PyCharm | Anaconda] error importing numpy - 简书

一、Tensorboard的使用

        作用:直观观察训练中给模型提供了哪些数据,或者是可以看到模型训练的每一步结果,或是观察不同阶段的显示。

(1)画图列表

from torch.utils.tensorboard import SummaryWriter
# 创建一个实例,将该实例对应的事件文件存储到logs文件夹下
writer = SummaryWriter("logs")
# writer.add_image()
# y = x
# 添加一个数,即标量  "y=x"表示数据类型,第一个i是y轴,第二个i是x轴(训练步骤数)
for i in range(100):
    writer.add_scalar("y=x", i, i)
# y = 2x
# 添加一个数,即标量  "y=x"表示图名称,第一个i是y轴,第二个i是x轴(训练步骤数)
# for i in range(100):
#      writer.add_scalar("y=2x", 3*i, i)
writer.close()

# 应用方法:tensorboard --logdir=logs  logdir = 事件文件所在文件夹名
# 拓展:tensorboard --logdir=logs --port=6007  指定端口
# 注: writer.add_scalar("y=2x", 3*i, i) 这个代码可能使原本是y=3x的公式进入到上一个事件y=2x中(即保留了),删除logs中的文件重新运行即可

(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 (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
         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``.

        Examples::

            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')
            writer.close()

a.获取图片格式(img_tensor的选择),可转为numpy型图片数据(opencv)

from PIL import Image
image_path = "data/train/ants_image/0013035.jpg"
img = Image.open(image_path)
#得到img ={JpegImageFile} <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=768x512 at 0x2C3C5E68B88>  所以类型是JpegImageFile
print(type(img))
<class 'PIL.JpegImagePlugin.JpegImageFile'>
import numpy as np
img_array = np.array(img)

b.应用

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

# 创建一个实例,将该实例对应的事件文件存储到logs文件夹下
writer = SummaryWriter("logs")
image_path = "data/train/ants_image/0013035.jpg"
img_PIL = Image.open(image_path)
#转换图片格式为np
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
# (512, 768, 3)  通道格式为(H,W,C)  dataformats='HWC'

writer.add_image("text", img_array, 1, dataformats='HWC')
# 1表示输出的是第一步的结果, 2表示输出的是第二步的结果
# 如果将text改成其他名称,那么就会在其他窗口显示结果

writer.close()

# 应用方法:tensorboard --logdir=logs  logdir = 事件文件所在文件夹名
# 拓展:tensorboard --logdir=logs --port=6007  指定端口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值