学习 TensorBoard:TensorBoard 使用指南

释放双眼,带上耳机,听听看~!
本文介绍了TensorBoard的功能和使用方法,包括安装、创建SummaryWriter实例、添加数据等步骤。读者可以学习如何使用TensorBoard来可视化模型训练过程中的数据,帮助优化和改进模型。

第一期:👉👉 juejin.cn/post/724000…

二、学习 TensorBoard

Ⅰ. TensorBoard 是什么

TensorBoard 是一个强大的可视化工具,也是一个Web应用程序套件。TensorBoard截至目前支持7种可视化,分别是Scalars、Images、Audio、Graphs、Distributions、Histograms和Embeddings。其中可视化的主要功能如下。

  • Scalars: 展示训练过程中的准确率、损失值、权重/偏置的变化情况

  • Images: 展示训练过程中记录的图像

  • Audio: 展示训练过程中记录的音频

  • Graphs: 展示模型的数据流图,以及训练在各个设备上消耗的内存和时间

  • Distributions: 展示训练过程中记录的数据的分部图

  • Histograms: 展示训练过程中记录的数据的柱状图

  • Embeddings: 展示词向量后的投影分部

Ⅱ. 使用 TensorBoard

  1. 安装 tensorboard

    pip install tensorboard
    
  2. 创建 SummaryWriter 实例

    from torch.utils.tensorboard import SummaryWriter
    # 创建SummaryWriter实例,并且可以指定一些参数,参数如下图
    writer = SummaryWriter(log_dir="logs")
    

    学习 TensorBoard:TensorBoard 使用指南

    • log_dir (str):指定了数据保存的文件夹,如果文件夹不存在则会创建一个。如果没有指定的话,默认的保存的文件夹是./runs/现在的时间_主机名

    • comment (string):给默认的log_dir添加的后缀,如果已经指定了log_dir的值,那么这个参数就不会生效

    • purge_step (int):TensorBoard在记录数据的时候有可能会崩溃,purge_step指定的step内的数据都被被丢弃

    • max_queue (int):在记录数据的时候,在内存中开的队列的长度,当队列慢了之后就会把数据写入磁盘文件中

    • flush_secs (int):以秒为单位的写入磁盘的间隔,默认120秒

    • filename_suffix (string):添加到log_dir中每个文件的后缀

  3. 添加数据

    from torch.utils.tensorboard import SummaryWriter
    
    writer = SummaryWriter(log_dir="logs")
    
    # 举个例子
    # 第8次计算是5
    # 第9次计算是10
    # 第10次计算是6
    writer.add_scalar(tag="test_scalar", scalar_value=5, global_step=8)
    writer.add_scalar(tag="test_scalar", scalar_value=10, global_step=9)
    writer.add_scalar(tag="test_scalar", scalar_value=6, global_step=10)
    
    # add_scalar 参数
    # tag (str): 图表的标题,也是图的唯一标识
    # scalar_value (float or string/blobname): 输出的数据 (相当于折线图的y轴)
    # global_step (int): 步 (相当于折线图的x轴)
    # walltime (float): 覆盖默认的walltime (time.time())
    # new_style (boolean): 是使用新样式还是旧样式
    
    writer.close()
    

    运行上述代码我们会得到一下日志数据

    学习 TensorBoard:TensorBoard 使用指南

    # 控制台执行
    tensorboard --logdir=logs
    

    然后打开控制台输出的web端地址,即可查看我们的图标

    学习 TensorBoard:TensorBoard 使用指南

    这是所有支持的可视化数据

    学习 TensorBoard:TensorBoard 使用指南

三、学习 Transforms

Ⅰ. Transforms 是什么

Transforms 是 torchvision 下的一个子模块,主要用于对图像进行转换等一系列预处理操作,其主要目的是对图像数据进行增强,进而提高模型的泛化能力。对图像预处理操作有数据中心化,缩放,裁剪,旋转,翻转,填充,添加噪声,灰度变换,线性变换,仿射变换,亮度,饱和度,对比变换等

Ⅱ. 使用 Transforms

  1. 安装 Transforms

    pip install torchvision==0.15.0 --index-url https://download.pytorch.org/whl/cu117
    
  2. 使用 Transforms

    from torchvision import transforms
    import cv2 as cv
    
    img = cv.imread("dataset/train/image/0013035.jpg")
    print(type(img))
    
    tensor_trans = transforms.ToTensor()
    
    tensor_img = tensor_trans(img)
    print(type(tensor_img))
    

    经过ToTensor 我们将 numpy.ndarray 类型的图片转成了 tensor 类型

    学习 TensorBoard:TensorBoard 使用指南

  3. Transforms 下的其他工具

    from torchvision import transforms
    import cv2 as cv
    # 取一张图片
    img = cv.imread("dataset/train/image/0013035.jpg")
    print(type(img))
    
    # 将输入图像转成Tensor类型
    tensor_trans = transforms.ToTensor()
    # 调用转换
    tensor_img = tensor_trans(img)
    print(type(tensor_img))
    
    # 将输入图像的大小调整为给定的大小。
    resize_trans = transforms.Resize((300, 300))
    
    # 将输入图像转成PIL的Image类型
    PILImage_trans = transforms.ToPILImage()
    
    # 相当于一个流式操作,可以指定多个transforms
    transforms.Compose({tensor_trans, resize_trans, PILImage_trans})
    
    # 归一化,标准化
    # 处理后将数据标准化,即均值为0,标准差为1,使模型更容易收敛。
    # 可参考此文章 https://blog.csdn.net/qimo601/article/details/126948204
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    
    #transforms 下还有很多工具,可.出来分别看一下
    
    
  4. 将上期的 Dataset 与本期的 Transforms、TensorBoard,联合使用

    from read_data import MyDataset
    from torchvision import transforms
    from torch.utils.tensorboard import SummaryWriter
    
    # 创建 MyDataset 对象
    my_dataset = MyDataset("dataset/train")
    # 拿到下标50和100的 image 和 label
    img50, label50 = my_dataset[50]
    img100, label100 = my_dataset[100]
    
    # 通过transforms将图片转为tensor类型
    tensor_trans = transforms.ToTensor()
    tensor_img50 = tensor_trans(img50)
    tensor_img100 = tensor_trans(img100)
    
    # 使用tensorboard,对tensor类型图片进行预览
    writer = SummaryWriter("logs")
    writer.add_image("test", tensor_img50, 50)
    writer.add_image("test", tensor_img100, 100)
    writer.close()
    
    # 效果如下图,在我们训练过程中,可以看一些训练过程的图片
    

    学习 TensorBoard:TensorBoard 使用指南

四、下期预告

1. torchvision 中的数据集使用

2. DataLoader 的使用

五、下下期预告

1. 神经网络基本骨架Module的使用

2. 神经网络的卷积层

会尽快更新~~~ 快来关注一下~~~

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

ChatGPT技术改进分析:CoT和Zero-shot-CoT的应用及原因解析

2023-11-26 13:50:14

AI教程

基于生成对抗网络的虚拟现实场景增强技术

2023-11-26 13:52:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索