news 2026/5/26 1:31:38

hook来获取模型每层的激活值输出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hook来获取模型每层的激活值输出

import sys

import os

from pathlib import Path

# 解决 OpenMP 库冲突问题

os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'

# 添加项目根目录到 Python 路径

project_root = Path(__file__).parent.parent

sys.path.insert(0, str(project_root))

import torch

import torch.nn as nn

import matplotlib.pyplot as plt

import torchvision

from models.UNeXt.UNeXt_Stripe_Conv import UNext_Stripe_Conv

# ========== 1. 准备一个存储激活值的字典 ==========

activations = {}

#x1.detach()的意思是:把张量从计算图中"剪断",不再追踪梯度

def get_activation(name):

"""定义hook函数"""

def hook(model, input, output):

activations[name] = output.detach()

return hook

# ========== 2. 给模型的层注册hook ==========

model = UNext_Stripe_Conv(num_classes=1)

model.eval()

# 给所有卷积层注册hook

for name, layer in model.named_modules():

if isinstance(layer, nn.Conv2d):

layer.register_forward_hook(get_activation(name))

# ========== 3. 前向传播,自动捕获激活值 ==========

input_image = torch.randn(1, 3, 224, 224)

with torch.no_grad():

output = model(input_image)

# ========== 4. 可视化任意层 ==========

def visualize_layer(layer_name, num_channels=16):

"""显示某层的前num_channels个通道"""

act = activations[layer_name][0] # [C, H, W]

fig, axes = plt.subplots(4, 4, figsize=(10, 10))

for i, ax in enumerate(axes.flat):

if i < min(num_channels, act.shape[0]):

ax.imshow(act[i].cpu(), cmap='viridis')

ax.set_title(f'Ch {i}')

ax.axis('off')

plt.suptitle(f'{layer_name}')

plt.show()

# 使用

print(f"捕获了 {len(activations)} 层")

first_conv = list(activations.keys())[0]

visualize_layer(first_conv)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/24 16:21:02

揭秘RPA:高效办公的未来利器

这里以金智维版本学习为例。1.什么是RPA K-RPA里的“RPA”是“Robotic Process Automation”的英文缩写&#xff0c;中文翻译为机器人流程自动化&#xff0c;亦可翻译成软件机器人、虚拟劳动者&#xff0c;是可以记录人在计算机上的操作&#xff0c;并重复运行的软件。因其可以…

作者头像 李华
网站建设 2026/5/26 3:42:40

14、互联网应用全攻略:新闻组、邮件与即时通讯的使用指南

互联网应用全攻略:新闻组、邮件与即时通讯的使用指南 1. 新闻组的探索与使用 1.1 新闻组简介 新闻组可以被视为公共信息公告板,在这里,有相似兴趣的人们聚在一起讨论某个主题。和网络论坛一样,新闻组也是获取技术支持的好地方。不过,Firefox 并不提供新闻组支持,你可以…

作者头像 李华
网站建设 2026/5/26 1:23:35

16、Linux 文件管理与文件系统全解析

Linux 文件管理与文件系统全解析 1. Xandros文件管理器的使用 Xandros 提供了一款定制的文件管理器,它看起来是基于 Konqueror 开发的。访问这个文件管理器的一种方法是双击桌面上的“Home”目录。该文件管理器的工作方式与本章中介绍的其他文件管理器类似。由于 Xandros 是…

作者头像 李华
网站建设 2026/5/25 13:40:37

【Mac使用Z-Image生图教程】Mac 安装和运行z-image-turbo 红潮特化版 z-image-turbo mac版本整合包的图文详细教程(含 z-image-turbo.DMG 下载)

【Mac使用Z-Image生图教程】Mac 安装和运行z-image-turbo 红潮特化版 z-image-turbo mac版本整合包的图文详细教程&#xff08;含 z-image-turbo.DMG 下载&#xff09; **标签&#xff1a;**z-image 苹果芯片版、Mac AI生图工具、文生图教程、国内下载、M4 Mac mini、LoRA、Co…

作者头像 李华
网站建设 2026/5/23 23:07:00

WebPlotDigitizer:图表数据提取的终极解决方案

WebPlotDigitizer&#xff1a;图表数据提取的终极解决方案 【免费下载链接】WebPlotDigitizer安装包 WebPlotDigitizer 安装包欢迎使用WebPlotDigitizer安装包&#xff01;本资源提供了直接下载即用的便捷方式&#xff0c;帮助您快速启动并使用这款强大的数据提取工具 项目地…

作者头像 李华
网站建设 2026/5/24 21:43:24

大连格恩朗超声波水表:以精准计量,护航智慧水务升级

自2019年成立以来&#xff0c;大连格恩朗深耕智慧计量领域&#xff0c;始终秉持“精准为核、水务赋能”的理念&#xff0c;紧扣供水行业“降漏损、精计量、智管理”的核心需求&#xff0c;倾力打造超声波水表系列产品。凭借对计量精度的极致追求和场景化的技术适配&#xff0c;…

作者头像 李华