网易首页 > 网易号 > 正文 申请入驻

PyTorch小技巧:使用Hook可视化网络层激活(各层输出)

0
分享至

这篇文章将演示如何可视化PyTorch激活层。可视化激活,即模型内各层的输出,对于理解深度神经网络如何处理视觉信息至关重要,这有助于诊断模型行为并激发改进。



我们先安装必要的库:

pip install torch torchvision matplotlib

加载CIFAR-10数据集并可视化一些图像。这有助于理解模型处理的输入。

import torchvision
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
# Transformations for the images
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# Load CIFAR-10 dataset
trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True)
# Function to show images
def imshow(img):
img = img.numpy().transpose((1, 2, 0))
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
img = std * img + mean # unnormalize
plt.imshow(img)
plt.show()
# Get some images
dataiter = iter(trainloader)
images, labels = next(dataiter)
# Display images
imshow(torchvision.utils.make_grid(images))



看着很模糊的原因是我们使用的CIFAR-10图像32x32的,很小 。因为对于小图像,处理速度很快,所以CIFAR-10称为研究的首选。

然后我们加载一个预训练的ResNet模型,并在特定的层上设置钩子函数,以在向前传递期间捕获激活。

import torch
from torchvision.models import resnet18
# Load pretrained ResNet18
model = resnet18(pretrained=True)
model.eval() # Set the model to evaluation mode
# Hook setup
activations = {}
def get_activation(name):
def hook(model, input, output):
activations[name] = output.detach()
return hook
# Register hooks
model.layer1[0].conv1.register_forward_hook(get_activation('layer1_0_conv1'))
model.layer4[0].conv1.register_forward_hook(get_activation('layer4_0_conv1'))

这样,在通过模型处理图像时就能捕获到激活。

# Run the model
with torch.no_grad():
output = model(images)

通过上面钩子函数我们获得了激活下面就可以进行可视化

# Visualization function for activations
def plot_activations(layer, num_cols=4, num_activations=16):
num_kernels = layer.shape[1]
fig, axes = plt.subplots(nrows=(num_activations + num_cols - 1) // num_cols, ncols=num_cols, figsize=(12, 12))
for i, ax in enumerate(axes.flat):
if i < num_kernels:
ax.imshow(layer[0, i].cpu().numpy(), cmap='twilight')
ax.axis('off')
plt.tight_layout()
plt.show()
# Display a subset of activations
plot_activations(activations['layer1_0_conv1'], num_cols=4, num_activations=16)

结果如下:



plot_activations(activations['layer4_0_conv1'], num_cols=4, num_activations=16)



PyTorch的钩子函数(hooks)是一种非常有用的特性,它们允许你在训练的前向传播和反向传播过程中插入自定义操作。这对于调试、修改梯度或者理解网络的内部运作非常有帮助。

利用 PyTorch 钩子函数来可视化网络中的激活是一种很好的方式,尤其是想要理解不同层如何响应不同输入的情况下。在这个过程中,我们可以捕捉到网络各层的输出,并将其可视化以获得直观的理解。

可视化激活有助于理解卷积神经网络中的各个层如何响应输入图像中的不同特征。通过可视化不同的层,可以评估早期层是否捕获边缘和纹理等基本特征,而较深的层是否捕获更复杂的特征。这些知识对于诊断问题、调整层架构和改进整体模型性能是非常宝贵的。

https://avoid.overfit.cn/post/c63b9b1130fe425ea5b7d0bedf209b2e

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
卡塔尔18艘LNG船大单,中国拿下!韩媒破防:谁也别想超越韩国

卡塔尔18艘LNG船大单,中国拿下!韩媒破防:谁也别想超越韩国

兵国大事
2024-04-30 15:30:41
赵本山黑脸巡视儿子公司!生意冷清亏损严重,砸钱数亿或血本无归

赵本山黑脸巡视儿子公司!生意冷清亏损严重,砸钱数亿或血本无归

清欢渡语
2024-04-28 22:38:17
扎心了!浙江39岁大龄剩女相亲,提出无理要求吓跑离异二婚男

扎心了!浙江39岁大龄剩女相亲,提出无理要求吓跑离异二婚男

户外阿崭
2024-04-30 15:41:30
李连杰携女儿探望向太!两手插兜惹争议,女儿颜值高似妈妈利智

李连杰携女儿探望向太!两手插兜惹争议,女儿颜值高似妈妈利智

裕丰娱间说
2024-04-29 16:57:37
比亚迪仰望U8追尾大货车:前发动机机舱被撕裂,乘员舱几乎没受影响!网友:100多万的车,车身实在太硬了

比亚迪仰望U8追尾大货车:前发动机机舱被撕裂,乘员舱几乎没受影响!网友:100多万的车,车身实在太硬了

和讯网
2024-04-29 16:38:29
没想到老年人的瓜这么多!网友的评论太炸裂,我小脑都萎缩了

没想到老年人的瓜这么多!网友的评论太炸裂,我小脑都萎缩了

夢婷
2024-01-05 12:09:08
34岁鹿晗自曝不吃碳水很多年!脸部肿胀已过气,被嘲配不上关晓彤

34岁鹿晗自曝不吃碳水很多年!脸部肿胀已过气,被嘲配不上关晓彤

小咪侃娱圈
2024-04-30 15:08:49
985女大学生和多名老板“私聊”记录,令人瞠目结舌:吃相太难看

985女大学生和多名老板“私聊”记录,令人瞠目结舌:吃相太难看

妍妍教育日记
2024-04-29 17:35:38
这是我见过最惨的嫁给穷人的故事,有些穷人不值得可怜

这是我见过最惨的嫁给穷人的故事,有些穷人不值得可怜

户外阿崭
2024-04-30 18:59:35
重要会议!楼市进入新阶段—“去库存",天津会全面取消限购吗?

重要会议!楼市进入新阶段—“去库存",天津会全面取消限购吗?

刘晓博说楼市
2024-04-30 16:49:23
卡佩罗:金玟哉在比赛中遇到了很多麻烦,今后他很难再为拜仁参赛

卡佩罗:金玟哉在比赛中遇到了很多麻烦,今后他很难再为拜仁参赛

直播吧
2024-05-01 07:07:22
伦纳德宣布赛季报销!快船陷入绝境,哈登和乔治出现悲观情绪

伦纳德宣布赛季报销!快船陷入绝境,哈登和乔治出现悲观情绪

张敏
2024-04-30 11:31:30
从5799降至2998:小米最悲情的绝版传奇旗舰手机重获新生!

从5799降至2998:小米最悲情的绝版传奇旗舰手机重获新生!

奇奇怪怪的冒险
2024-05-01 04:38:20
神舟18号成功发射后,美国高层方寸大乱!西方担心的事还是发生了

神舟18号成功发射后,美国高层方寸大乱!西方担心的事还是发生了

小lu侃侃而谈
2024-04-29 16:26:26
重磅!北京官宣:调整限购政策

重磅!北京官宣:调整限购政策

每日经济新闻
2024-04-30 20:34:20
富士康开始反击了?郭台铭正式宣布,外媒:要把锅端走了

富士康开始反击了?郭台铭正式宣布,外媒:要把锅端走了

疯狂小菠萝
2024-04-30 17:44:10
安切洛蒂:拜仁展现了他们最好的一面,但是我们没有

安切洛蒂:拜仁展现了他们最好的一面,但是我们没有

直播吧
2024-05-01 05:31:11
2024最差危机公关?为“保护”华为问界M7和博世上演智驾罗生门?

2024最差危机公关?为“保护”华为问界M7和博世上演智驾罗生门?

摩根商研所
2024-04-30 00:56:46
湖北省农村信用社联合社原党委副书记冯云乔被查

湖北省农村信用社联合社原党委副书记冯云乔被查

界面新闻
2024-04-30 17:04:18
波尔津吉斯伤情确认,小卡确定了,独行侠伤情加重,老詹计划有变

波尔津吉斯伤情确认,小卡确定了,独行侠伤情加重,老詹计划有变

体坛大辣椒
2024-05-01 06:45:43
2024-05-01 08:42:44
deephub
deephub
CV NLP和数据挖掘知识
1325文章数 1413关注度
往期回顾 全部

科技要闻

余承东卸任华为终端CEO 新任命为董事长

头条要闻

五一假期"堵车"上热搜 有人提前2小时出门没赶上高铁

头条要闻

五一假期"堵车"上热搜 有人提前2小时出门没赶上高铁

体育要闻

穆雷,绝杀了一个时代

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

查道炯:中国经济的外部挑战与应对思考

汽车要闻

越野老炮最爱 哈弗新H9新增2.4T柴油机

态度原创

本地
游戏
教育
数码
旅游

本地新闻

食味印象 | 潍坊:碳水脑袋的人间乐园

发售不到一周,《剑星》成为索尼在M站评分第二高的游戏

教育要闻

美国大学反战抗议愈演愈烈,逐渐演变成反犹太抗议,但幕后资方竟然是犹太人?

数码要闻

Beats发布Solo 4耳机 具有改进的声学效果与更长的电池续航

旅游要闻

五一大雨,浇灭了多少旅游城市的心气?

无障碍浏览 进入关怀版