当前位置: 首页 > news >正文

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)

http://www.rkmt.cn/news/87379.html

相关文章:

  • baresip SIP账户配置终极指南:从入门到精通
  • 图解网络40
  • 【资源对接会哪个靠谱】落地执行与效果验证:一套可复用的筛选方
  • Qwen-Image-Lightning:如何用4-8步实现实时文生图创作
  • 2025年中国五大电子汽车衡厂商推荐:汽车衡正规厂商哪家性价 - mypinpai
  • 大模型训练优化:5个内存效率提升技巧与实战配置指南
  • 2025年ELBE联轴器品牌推荐排名,看看哪家价格实惠 - 工业推荐榜
  • 人工智能作业
  • 精通 oil.nvim 排序配置:打造个性化文件管理体验
  • 探索你的“饮食碳足迹”:一款直观的可持续饮食计算工具
  • Spring管理MyBatis Mapper接口的原理详解
  • Trae Agent离线模式终极指南:无网络环境下的完整解决方案
  • 终极指南:用ReplayBook轻松搞定英雄联盟回放管理
  • Unity塔防游戏开发实战:构建智能防御系统的完整指南
  • 微信7.0.6提示升级问题解决方法
  • 回收台达PLC,伺服,变频器等
  • 大厂RAG架构师都藏着!9个核心步骤,彻底搞懂向量检索系统的设计精髓
  • 漏洞赏金真的容易吗?揭秘技术挑战与成功之路
  • 现代C++与Qt飞行仪表库:让飞行模拟开发触手可及
  • 5分钟学会:这款Windows酷安UWP客户端为何成为效率神器?
  • Duplicacy缓存机制终极指南:如何实现5倍备份速度提升
  • 2025年中国工业隔音设备五大品牌推荐:办公室静音房、隔音房 - myqiye
  • 上海舒舜精密轴承有限公司的实力如何?客户对产品的满意度怎样 - 工业品牌热点
  • 2025 GEO优化避坑5条:警惕付费收录、虚假榜单
  • RookieAI_yolov8:5分钟快速掌握游戏AI自瞄核心技术
  • TikTok直播录制终极解决方案:一键自动保存精彩瞬间
  • Python实战:Sholl分析在神经科学研究中的完整应用指南
  • 廊坊市企业营销策划哪家更专业
  • 2025年深圳遗嘱咨询律师电话汇总: 深圳知名律所联系方式及遗嘱服务专业指引 - 品牌推荐
  • 2025年热门的钢板预处理线厂家推荐及采购参考 - 品牌宣传支持者