PyTorch可视化

PyTorch可视化

1. 可视化网络结构

随着深度学习的发展,模型的网络结构越来越复杂,我们很难确定每一层的输入结果、输出结构和参数等信息,这样导致我们很难在短时间内完成debug。

这个时候可以通过可视化网络结构来帮助我们理解网络结构。其中在keras深度学习库中可以调用model.summary()的API来很方便地实现,调用后就会显示我们的模型参数、输入大小、输出大小、模型的整体参数等。

而在PyTorch中,可以使用torchinfo工具包,接下来讲解torchinfo的相关使用。

1.1 模型基础信息

以torchvision中的resnet18为例,可以简单看一下模型的基础信息

import torchvision.models as models
model = models.resnet18()

# ResNet(
#   (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
#   (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
#   (relu): ReLU(inplace=True)
#   (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
#   (layer1): Sequential(
#     ...
#   )
#   (layer2): Sequential(
#     ...
#   )
#   (layer3): Sequential(
#     ...
#   )
#   (layer4): Sequential(
#     ...
#   )
#   (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))
#   (fc): Linear(in_features=512, out_features=1000, bias=True)
# )

1.2 使用torchinfo可视化结构

示例代码如下:

from torchinfo import summary
import torchvision.models as models

resnet = models.resnet18()
summary(resnet, (1, 3, 224, 224))

其中,可以看到torchinfo提供了更加详细的信息,包括每个模块的信息(每一层的信息,输出shape和参数量)、模型总共参数量、模型大小、前向/反向传播需要的内存,参数内存、预估总共信息。

在这里插入图片描述

2. CNN可视化

卷积神经网络(CNN)是深度学习中非常重要的模型结构,它广泛地用于图像处理,极大地提升了模型表现,推动了计算机视觉地发展和进步。但CNN是一个“黑盒模型”,因此为了理解CNN的工作方式,引入了深度学习的可解释问题。

理解CNN的工作原理,人们不仅能够解释所获得的结果,提升模型的鲁棒性,还能针对性地改进CNN的结构以获得进一步的效果提升。

其中,可视化是一个理解模型结构的重要手段,比如可视化特征的提取可视化提取的特征的形式模型在输入数据的关注点等。

2.1 CNN卷积核可视化

卷积核在CNN中负责提取特征,可视化卷积核可以帮助理解CNN各个层提取什么样的特征,进而理解模型的工作原理。这里Zeiler和Fergus 2013年的paper研究了CNN各个层的卷积核的不同,他们发现靠近输入的层提取的特征是相对简单的结构,而靠近输出层提取的结构和图中的实体形状就相近了,如图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可视化卷积核,本质上就是可视化对应的权重矩阵,这里以VGG11模型为例讲解PyTorch中可视化卷积核的实现方案:

# load model
import torch
from torchvision.models import vgg11

model = vgg11(pretrained=True)
dict(model.features.named_children())

在这里插入图片描述

卷积核对应的是卷积层(Conv2d),这里以第三层为例,可视化对应的参数:

conv1 = dict(model.features.named_children())['3']
kernel_set = conv1.weight.detach()
num = len(conv.weight.detach(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值