快速入门深度学习 PyTorch(保姆级教程)第二期

第一期:?? 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")
    
    

    image.png

    • 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()
    
    

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

    image.png

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

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

    image.png

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

    image.png

三、学习 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 类型

    image.png

  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()
    
    
    
    # 效果如下图,在我们训练过程中,可以看一些训练过程的图片
    

    image.png

四、下期预告

1. torchvision 中的数据集使用

2. DataLoader 的使用

五、下下期预告

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

2. 神经网络的卷积层

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYy07KiE' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片