news 2026/6/10 14:26:50

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/6/9 23:14:11

5分钟快速上手IoTSharp:构建你的专属物联网平台

5分钟快速上手IoTSharp&#xff1a;构建你的专属物联网平台 【免费下载链接】IoTSharp IoTSharp is an open-source IoT platform for data collection, processing, visualization, and device management. 项目地址: https://gitcode.com/gh_mirrors/io/IoTSharp 想要…

作者头像 李华
网站建设 2026/6/10 14:03:18

基于SSM+Vue的社区团购系统小程序的设计与实现

社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个会员的使用。手机具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要求的操作系统是非…

作者头像 李华
网站建设 2026/6/10 14:07:21

Day 32

DAY 32 昨天我们已经介绍了如何在不同的文件中&#xff0c;导入其他目录的文件&#xff0c;核心在于了解导入方式和python解释器检索目录的方式。 搞清楚了这些&#xff0c;那我们就可以来看看&#xff0c;如何把一个文件&#xff0c;拆分成多个具有着独立功能的文件&#xf…

作者头像 李华
网站建设 2026/6/10 14:29:31

年营收超60亿元,它会成为3D打印领域的大疆吗?

"拓竹战大疆&#xff1a;师徒相争"作者 | 简安编辑 | 卢旭成2025年末&#xff0c;一场发酵于朋友圈的隔空交火&#xff0c;让成立仅5年的拓竹与老东家大疆的“商战大戏”迅速出圈、引发热议。故事的起因是&#xff1a;大疆斥资数亿元投资了一家3D打印公司&#xff0c…

作者头像 李华
网站建设 2026/6/10 7:47:25

光刻技术第7期 | 二维与三维矢量成像模型对比-零波像差双远心成像

01/简介零波像差双远心物镜以“视场全域波前畸变趋近于零、物像比例恒定”的特性&#xff0c;成为3D NAND、精密微纳制造等场景的核心光学器件&#xff0c;但其对成像模型的维度适配性提出严苛要求。二维矢量成像模型虽能满足平面图形的偏振态表征需求&#xff0c;却因忽略深度…

作者头像 李华
网站建设 2026/6/10 14:30:33

浅析应用系统需求(之一)--SMP(软件制作平台)

需求是万物之源&#xff0c;也是SMP之源--SMP(软件制作平台)语言基础知识之四 软件开发需求--SMP(软件制作平台)语言基础知识之五 需求到系统再到平台--SMP&#xff08;软件制作平台&#xff09; SMP&#xff08;软件制作平台&#xff09;如何将一个需求&#xff0c;转变成一…

作者头像 李华