Pytorch深度学习-代码篇:数据可视化

通过tensorboard实现数据集的可视化,并用代码演示。

代码实现

创建SummaryWriter类实例

首先需要实例化SummaryWriter类,并指定其操作的文件夹。

1
2
3
4
5
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter("logs")

执行后会在根目录下创建一个名为”logs”的文件夹。

创建可用端口

类似jupyter notebook,tensorboard使用时也需要借助一个端口来操作。我们需要在console进行操作。

1
(pytorch) c:\Users\Desktop\learn_torchs tensorboard --logdir=logs --port=6007

1
2
3
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.1.0 at http://localhost:6007/(Press CTRL+C to quit)

进入端口6007即可进入tensorboard。
其中,--logdir是必须指定的参数,其值为SummaryWriter类实例所在文件夹。
--port=6007的缺省值为6006。

数值可视化

绘制$y=2x$的图像:

1
2
3
4
5
for i in range(100):
# 参数1:可视化标签;参数2:y值;参数3:x值
wirter.add_scalar("y=x", 2*i, i)

writer.close() # 使用后需要关闭

运行后可以看见,在logs文件夹中生成了一个文件。一个文件对应一个标签的可视化板块。

进入端口并刷新后可以看到页面。

tensorboard会存储之前的数据,因此,如果不删除之前对应的文件,直接在相同标签中续写会出现。比如我们在之前标签为$y=2x$的tensorboard下续写$y=3x$函数:

1
2
3
4
5
for i in range(100):
# 参数1:可视化标签;参数2:y值;参数3:x值
wirter.add_scalar("y=x", 3*i, i)

writer.close() # 使用后需要关闭

结果如图:

图片可视化

1
2
3
4
5
6
7
8
9
writer = SummaryWriter("logs")

image_path = "data/train/ants_image/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
# 参数1:可视化标签;参数2:图像(一般为tensor和numpy类型);参数3:step;参数4:通道顺序
writer.add_image("test", img_array, 1, dataformates='HWC')

writer.close()
---------------------本文结束---------------------