news 2026/4/25 11:05:42

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/4/19 0:47:40

15、Linux 网络工具与文件目录操作全解析

Linux 网络工具与文件目录操作全解析 1. 即时通讯(IM)问题排查 在使用网络时,有时会遇到能打开网站但即时通讯(IM)无法使用的情况。这种问题的出现可能有以下原因: - IM 服务维护 :IM 服务可能正在进行维护,导致暂时不可用。 - 网络流量过大 :互联网或 IM 服务…

作者头像 李华
网站建设 2026/4/22 2:35:12

别再把图片存进数据库了!从全栈视角看 OSS 的架构本质

从全栈部署实战&#xff0c;聊聊 OSS 对象存储的本质 在进行全栈开发时&#xff0c;新手往往会遇到文件存储的痛点。很多同学在初次接触云服务器部署时&#xff0c;对 OSS&#xff08;Object Storage Service&#xff0c;对象存储服务&#xff09;的概念感到模糊。本文将通过一…

作者头像 李华
网站建设 2026/4/23 21:05:09

精通 oil.nvim 排序配置:打造个性化文件管理体验

精通 oil.nvim 排序配置&#xff1a;打造个性化文件管理体验 【免费下载链接】oil.nvim Neovim file explorer: edit your filesystem like a buffer 项目地址: https://gitcode.com/gh_mirrors/oi/oil.nvim oil.nvim 是一款革命性的 Neovim 文件浏览器插件&#xff0c;…

作者头像 李华
网站建设 2026/4/18 1:44:39

闲置上门回收小程序开发、一键回收超轻松!

闲置上门回收小程序开发、一键回收超轻松&#xff01;旧衣回收小程序作为互联网发展下的新模式&#xff0c;在我国回收市场中发挥了积极作用。大众只需在小程序上选择回收种类并预订上门回收时间&#xff0c;回收员便会按时进行回收&#xff0c;极大地节约了用户的时间和精力。…

作者头像 李华
网站建设 2026/4/18 5:45:24

玩转RPCS3汉化:从零开始打造中文游戏体验的完整攻略

玩转RPCS3汉化&#xff1a;从零开始打造中文游戏体验的完整攻略 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 想要在RPCS3模拟器中畅玩中文版PS3游戏&#xff1f;本文为您提供一套完整的汉化解决方案。通过RP…

作者头像 李华
网站建设 2026/4/23 4:03:35

Trae Agent离线模式终极指南:无网络环境下的完整解决方案

Trae Agent离线模式终极指南&#xff1a;无网络环境下的完整解决方案 【免费下载链接】trae-agent Trae 代理是一个基于大型语言模型&#xff08;LLM&#xff09;的通用软件开发任务代理。它提供了一个强大的命令行界面&#xff08;CLI&#xff09;&#xff0c;能够理解自然语言…

作者头像 李华