热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pytorch学习笔记:task07

task07一、可视化网络结构1、使用print函数打印模型基础信息2、使用torchinfo可视化网络结构二、CNN卷积层可视化1可视化卷积核2、可视化CNN特征图的方法3CNN


task07

  • 一、可视化网络结构
    • 1、使用print函数打印模型基础信息
    • 2、使用torchinfo可视化网络结构
  • 二、CNN卷积层可视化
    • 1 可视化卷积核
    • 2、可视化CNN特征图的方法
    • 3 CNN class activation map可视化方法
  • 三、使用Tensorboard可视化训练过程
    • 1 TensorBoard可视化的基本逻辑
    • 2 TensorBoard的配置与启动


一、可视化网络结构

背景:深度神经网络的结构越来越复杂,因此很难确定每一层的输入结构、输出结构以及参数信息。因此需要一个类比Keras中model.summary()的可用来可视化网络结构的工具,调用后可显示模型参数、输入和输出的大小、模型的整体参数。
torchinfo:是由torchsummary和torchsummaryX重构出的库。


1、使用print函数打印模型基础信息

以ResNet18为例:
基础信息
只能看到基础信息,并不能看到每一层的详细信息:如shape、或者参数量大小等等


2、使用torchinfo可视化网络结构

torchinfo:主要使用torchinfo.summary(),必需的参数分别是model,input_size[batch_size,channel,h,w],documentation
借助torchinfo,可以看到更加详细的信息,包括模块信息(每一层的类型、输出shape和参数量)、模型整体的参数量、模型大小、一次前向或者反向传播需要的内存大小等
在这里插入图片描述
注意:
当使用colab或者jupyter notebook时,想要实现该方法,summary()一定是该单元(即notebook中的cell)的返回值,否则我们就需要使用print(summary(...))来可视化。


二、CNN卷积层可视化


1 可视化卷积核

在PyTorch中可视化卷积核的核心——特定层的卷积核即特定层的模型权重。可视化卷积核就等价于可视化对应的权重矩阵。下面给出在PyTorch中可视化卷积核的实现方案,以torchvision自带的VGG11模型为例:
加载模型
在这里插入图片描述
在这里插入图片描述
卷积核对应的应为卷积层(Conv2d),这里以第“3”层为例,可视化对应的参数:
在这里插入图片描述
由于第“3”层的特征图由64维变为128维,因此共有128*64个卷积核,其中部分卷积核可视化效果如下图所示


2、可视化CNN特征图的方法

与卷积核相对应,输入的原始图像经过每次卷积层得到的数据称为特征图,可视化卷积核是为了看模型提取哪些特征,可视化特征图则是为了看模型提取到的特征是什么样子的。

获取特征图的方法有很多种,


  • (1)从输入开始,逐层做前向传播,直到想要的特征图处将其返回。
  • (2)hook:专门用来使得网络在前向传播过程中能够获取到特征图的接口。
    可以想象这样的场景,数据通过网络向前传播,网络某一层我们预先设置了一个钩子,数据传播过后钩子上会留下数据在这一层的样子,读取钩子的信息就是这一层的特征图。
    实现流程:首先实现了一个hook类,之后在plot_feature函数中,将该hook类的对象注册到要进行可视化的网络的某层中。model在进行前向传播的时候会调用hook的__call__函数,我们也就是在那里存储了当前层的输入和输出。这里的features_out_hook 是一个list,每次前向传播一次,都是调用一次,也就是features_out_hook 长度会增加1

3 CNN class activation map可视化方法

相比可视化卷积核与可视化特征图,CAM系列可视化更为直观,能够一目了然地确定重要区域,进而进行可解释性分析或模型优化改进。
CAM系列操作的实现可以通过开源工具包pytorch-grad-cam来实现.
详细见ipynp文件


三、使用Tensorboard可视化训练过程

一般来说,我们会结合训练集的损失函数和验证集的损失函数,绘制两条损失函数的曲线来确定训练的终点,找到对应的模型用于测试。


1 TensorBoard可视化的基本逻辑

特点:


  • 记录模型的每一层feature map、权重、loss等,并保存在指定的文件夹。
  • 随着程序运行不断记录,
  • 可通过网络形式可视化。

2 TensorBoard的配置与启动

在安装包中 此部分稍后补齐


推荐阅读
author-avatar
Roux
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有