pytorch学习笔记-tensorboard使用

tensorboard的使用(一)

SummaryWriter类中.add_scalar()方法的使用(可按住Ctrl点击add_scalar查看该方法的功能)。

先用pip安装tensorboard,执行如下命令,画一个y=2x的图像。

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

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

writer.close()

注意需要在代码最后用writer.close()把它关闭,否则用下面的方法无法显示出图片。

下面是如何打开所画的图像,打开python终端。

pytorch学习笔记-tensorboard使用_第1张图片

如果terminal不是Pytorch,而是PS(如上图),去settings把路径改成cmd!

pytorch学习笔记-tensorboard使用_第2张图片

在终端使用如下命令,发现不行的话要安装tensorflow。logdir为事件所在的文件夹名。

tensorboard --logdir=logs
pytorch学习笔记-tensorboard使用_第3张图片

用豆瓣镜像源安装很快:

pip install tensorflow -i https://pypi.douban.com/simple

再次使用上面的命令打开tensorboard。

6006就是端口名,如果都用同一个端口可能会出问题,可以用如下命令主动设置端口名。

tensorboard --logdir=logs --port=6008

点击网址,弹出图像。

pytorch学习笔记-tensorboard使用_第4张图片

tensorboard的使用(二)

SummaryWriter类中.add_image()方法的使用(可按住Ctrl点击add_image查看该方法的功能)。

pytorch学习笔记-tensorboard使用_第5张图片

由于它要求的图片类型为上面白线的几种类型,而使用如下方法创建的图片类型为JPEGimagefile不符合要求,所以利用numpy.array(),对PIL图片进行转换。

image_path = "data/train/ants_image/0013035.jpg"
from PIL import Image
img = Image.open(image_path)
print(type(img))

# 输出

import numpy as np
img_array = np.array(img)
print(type(img_array))

# 输出
pytorch学习笔记-tensorboard使用_第6张图片

可以看到图片类型已经符合要求。

由于默认的图片维度是:math:`(3, H, W)`,也就是通道数在前面,然后是图片的高度和宽度,所以根据函数内部的提示,在参数里面加上dataformats = “HWC”。

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

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)

# 该方法的参数可以参考帮助文档,“1”可以理解为训练的步数是第几步
writer.add_image("test", img_array, 1, dataformats="HWC")
writer.close()

# 
# (512, 768, 3)

也可以直接使用np.transpose()转换维度。

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

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)

# 使用np.transpose()转换维度,下面的参数中就不需要加dataformats="HWC"
# transpose()函数的第二个参数就是改变索引值的地方
img_array = np.transpose(img_array, (2, 0, 1))    

print(img_array.shape)
writer.add_image("test", img_array, 1)
writer.close()

# 
# (512, 768, 3)
# (3,512, 768)

此时在终端里再运行一下,刷新可以在tensorboard查看图片。

pytorch学习笔记-tensorboard使用_第7张图片

上述代码中读取图片的部分可以使用OpenCV读取图片,opencv读取图片就是numpy.array类型的。需要先安装opencv-python库。

from torch.utils.tensorboard import SummaryWriter
import cv2

writer = SummaryWriter("logs")
image_path = "data/train/ants_image/6743948_2b8c096dda.jpg"

img_cv = cv2.imread(image_path)
print(type(img_cv))

writer.add_image("ants", img_cv, 1, dataformats="HWC")

writer.close()

刚开始出现了cv2无法显示可调用的函数的情况。

通过查找资料,发现需要将anaconda\envs\pytorch\Lib\site-packages\cv2文件夹中的cv2.pyd复制到site-packages文件夹中,问题解决。

pytorch学习笔记-tensorboard使用_第8张图片

你可能感兴趣的:(pytorch,学习,深度学习)