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

Python打卡训练营学习记录Day46

作业:

  1. 今日代码较多,理解逻辑即可
  2. 对比不同卷积层特征图可视化的结果(可选)

一、CNN特征图可视化实现

import torch
import matplotlib.pyplot as pltdef visualize_feature_maps(model, input_tensor):# 注册钩子获取中间层输出features = []def hook(module, input, output):features.append(output.detach().cpu())# 选择不同卷积层观察target_layers = [model.layer1[0].conv1,model.layer2[0].conv1,model.layer3[0].conv1]handles = []for layer in target_layers:handles.append(layer.register_forward_hook(hook))# 前向传播with torch.no_grad():_ = model(input_tensor.unsqueeze(0))# 移除钩子for handle in handles:handle.remove()# 可视化不同层特征图fig, axes = plt.subplots(len(target_layers), 5, figsize=(20, 10))for i, feat in enumerate(features):for j in range(5):  # 显示前5个通道axes[i,j].imshow(feat[0, j].numpy(), cmap='viridis')axes[i,j].axis('off')plt.show()

二、通道注意力模块示例

class ChannelAttention(nn.Module):def __init__(self, in_channels, reduction=16):super().__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.max_pool = nn.AdaptiveMaxPool2d(1)self.fc = nn.Sequential(nn.Linear(in_channels, in_channels // reduction),nn.ReLU(),nn.Linear(in_channels // reduction, in_channels),nn.Sigmoid())def forward(self, x):# ... existing code ...return x * attention_weights  # 应用注意力权重

三、热力图生成方法

def generate_heatmap(model, input_img):# 前向传播获取梯度model.eval()input_img.requires_grad = Trueoutput = model(input_img)pred_class = output.argmax(dim=1).item()# 反向传播计算梯度model.zero_grad()output[0, pred_class].backward()# 获取最后一个卷积层的梯度gradients = model.layer4[1].conv2.weight.gradpooled_gradients = torch.mean(gradients, dim=[0,2,3])# 生成热力图activations = model.layer4[1].conv2.activations.detach()for i in range(activations.shape[1]):activations[:,i,:,:] *= pooled_gradients[i]heatmap = torch.mean(activations, dim=1).squeeze()return heatmap

@浙大疏锦行

http://www.lryc.cn/news/2403500.html

相关文章:

  • 使用 C/C++ 和 OpenCV 实现滑动条控制图像旋转
  • 【 java 集合知识 第一篇 】
  • 护网行动面试试题(2)
  • 使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
  • 阿里140 补环境日志
  • uniapp map组件的基础与实践
  • 在 Kali 上打造渗透测试专用的 VSCode 环境
  • 《前端面试题:CSS3新特性》
  • 极速互联·智控未来——SG-Can(FD)Hub-600 六通道CANFD集线器
  • OpenVINO环境配置--OpenVINO安装
  • Linux top 命令 的使用总结
  • ajax学习手册
  • Python爬虫实战:研究urlunparse函数相关技术
  • [蓝桥杯]采油
  • OpenLayers 地图定位
  • 黑龙江云前沿服务器租用:便捷高效的灵活之选​
  • PyTorch中matmul函数使用详解和示例代码
  • 论文解读:Locating and Editing Factual Associations in GPT(ROME)
  • NoSQl之Redis部署
  • 学习设计模式《十二》——命令模式
  • 十三、【核心功能篇】测试计划管理:组织和编排测试用例
  • 手撕 K-Means
  • SmolVLA: 让机器人更懂 “看听说做” 的轻量化解决方案
  • day45python打卡
  • AIGC赋能前端开发
  • Web 3D协作平台开发案例:构建制造业远程设计与可视化协作
  • AI Agent开发第78课-大模型结合Flink构建政务类长公文、长文件、OA应用Agent
  • 极空间z4pro配置gitea mysql,内网穿透
  • 第三方测试机构进行科技成果鉴定测试有什么价值
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus X和DeepSeek-R1打造个人知识库问答系统