news 2026/4/18 11:02:35

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/17 8:16:15

17、Linux文件系统导航与分区管理全解析

Linux文件系统导航与分区管理全解析 1. 子目录内容概述 在Linux系统中,有一些重要的子目录,它们各自承载着特定的信息和功能: - /usr/share :这里存放着可在任何Linux机器上使用的信息,即便不同机器的硬件配置差异巨大,这些信息依然通用。 - /usr/src :此目录包…

作者头像 李华
网站建设 2026/4/18 10:18:23

baresip SIP账户配置终极指南:从入门到精通

baresip SIP账户配置终极指南&#xff1a;从入门到精通 【免费下载链接】baresip Baresip is a modular SIP User-Agent with audio and video support 项目地址: https://gitcode.com/gh_mirrors/ba/baresip 作为一款轻量级的SIP通信工具&#xff0c;baresip的账户配置…

作者头像 李华
网站建设 2026/4/18 8:14:54

企业Agent落地的可靠实践

Agent落地的可靠实践&#xff1a;工作流控稳定&#xff0c;自主规划提效率 在AI Agent落地过程中&#xff0c;“工作流模式保障核心业务稳定&#xff0c;自主规划模式承接效率型搜集整理任务”是兼顾可靠性与智能化的核心策略——前者让Agent成为“标准化业务的执行者”&#x…

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

【资源对接会哪个靠谱】落地执行与效果验证:一套可复用的筛选方

资源对接会哪个靠谱&#xff1f;落地执行与效果验证&#xff1a;一套可复用的筛选方法论 在当前经济环境下&#xff0c;资源对接会已成为中小企业主、创业者及产业运营者获取合作机会、拓展业务网络的重要渠道。然而&#xff0c;市场上各类对接会鱼龙混杂&#xff0c;参会成本…

作者头像 李华
网站建设 2026/4/16 20:55:52

Docker容器网络全栈学习路径

一、Docker网络基础概念与核心原理 Docker网络架构是容器间通信和与外部系统交互的核心机制,通过虚拟化网络设备和命名空间为每个容器提供独立的网络栈。Docker利用Linux的网络命名空间实现容器间的网络隔离,每个容器拥有独立的网络接口、路由表和端口空间。容器内部的eth0接…

作者头像 李华
网站建设 2026/4/16 2:41:20

如何用PrivateGPT轻松搞定超长文档处理?

在日常工作和学习中&#xff0c;我们常常需要处理各种超长文档——可能是上百页的技术手册、复杂的学术论文&#xff0c;或者是堆积如山的商业报告。面对这些海量信息&#xff0c;传统的人工阅读方式效率低下&#xff0c;而普通的AI工具又往往因为上下文窗口限制而无法全面理解…

作者头像 李华