Coding-可视化-tensorboard的使用

摘要

代码段配置了在TensorBoard中展示的生成图像数量,并通过循环选取指定数量的图像,利用make_grid函数将这些图像整理成网格形式,做好归一化处理以优化显示效果。随后,使用tb_writer.add_image功能将整理好的图像网格添加至TensorBoard的日志中,标以’Generated Images’,并借助global_step参数记录了训练进程中的具体步数,以便于观察模型生成图像随训练进展的变化情况。

代码可以写在for循环最后。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import torch.utils.tensorboard as tb
from torchvision.utils import save_image,make_grid

# 设置要在TensorBoard中展示的图像数量
num_images_to_log = 4 # 你希望在TensorBoard可视化界面中展示的生成图像的数量

# 遍历生成的图像,注意限制范围以不超过用户定义的数量或当前批次生成的图像总数
for i in range(min(num_images_to_log, gen_imgs.size(0))): # 确保索引不会超出生成图像列表的边界
# 使用make_grid函数将一批图像排列成网格以便展示,这里取连续的5张图像(i:i+5)
# nrow参数指定了网格的列数,这里设置为5列,因此会形成一个正方形的网格布局
# normalize参数设为True意味着将图像像素值归一化到[0,1]区间,这对于展示更有利,避免像素值溢出
# scale_each为True则会对每张图像单独进行缩放,确保对比度一致,即使图像间亮度有差异
img_grid = make_grid(gen_imgs[i:i+5], nrow=5, normalize=True, scale_each=True)

# 假设gen_imgs中的图像数据已经被适当处理(如归一化),则normalize和scale_each的设定可根据实际情况调整或省略

# 将生成的图像网格添加到TensorBoard中,'Generated Images'是该图像系列在TensorBoard中的日志标签
# global_step参数用于标记这是训练过程中的哪一步(比如迭代次数),有助于跟踪随时间的变化
# 这行代码在每个epoch训练结束时执行(由外部循环控制batches_done计数),将最新的生成图像更新到TensorBoard
tb_writer.add_image('Generated Images', img_grid, global_step=batches_done)