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

python打卡day42@浙大疏锦行

知识点回顾

  1. 回调函数
  2. lambda函数
  3. hook函数的模块钩子和张量钩子
  4. Grad-CAM的示例

 一、回调函数示例

# 训练过程中的回调函数
class Callback:def on_train_begin(self):print("训练开始")def on_epoch_end(self, epoch, logs=None):print(f"Epoch {epoch} 完成")# 使用示例
callback = Callback()
callback.on_train_begin()
for epoch in range(10):# ...训练代码...callback.on_epoch_end(epoch)

二、lambda函数示例

# 简单lambda
add = lambda x, y: x + y# 在PyTorch中的使用
data = torch.randn(10)
processed = list(map(lambda x: x*2, data))  # 每个元素乘以2

三、hook函数示例

# 模块钩子
model = nn.Sequential(nn.Linear(10,5), nn.ReLU())
def module_hook(module, input, output):print(f"{module.__class__.__name__} 输出形状: {output.shape}")
model[0].register_forward_hook(module_hook)# 张量钩子
x = torch.randn(3, requires_grad=True)
x.register_hook(lambda grad: grad * 0.5)  # 梯度修改

四、Grad-CAM示例

class GradCAM:def __init__(self, model, target_layer):self.model = modelself.gradients = Noneself.activations = Nonetarget_layer.register_forward_hook(self.save_activations)target_layer.register_backward_hook(self.save_gradients)def save_activations(self, module, input, output):self.activations = output.detach()def save_gradients(self, module, grad_input, grad_output):self.gradients = grad_output[0].detach()def __call__(self, x, class_idx=None):# ...前向/反向传播逻辑...cam = torch.relu(torch.sum(self.activations * weights, dim=1))return cam

关键点说明:

1. 回调函数常用于训练过程监控
2. lambda适合简单操作,复杂逻辑建议用普通函数
3. 模块钩子获取中间输出,张量钩子修改梯度
4. Grad-CAM通过hook获取梯度和激活值生成热力图

http://www.xdnf.cn/news/10344.html

相关文章:

  • 动态库导出符号与extern “C“
  • 2025年05月总结及随笔之家电询价及以旧换新
  • 剪枝中的 `break` 与 `return` 区别详解
  • APM32主控键盘全功能开发实战教程:软件部分
  • 【论文解读】Deformable DETR | Deformable Transformers for End-to-End Object Detection
  • 题单:最大公约数(辗转相除法)
  • 安全漏洞修复导致SpringBoot2.7与Springfox不兼容
  • 爬虫工具链的详细分类解析
  • 力扣刷题Day 66:分割回文串(131)
  • 【Redis】数据类型补充
  • t018-高校宣讲会管理系统 【含源码!】
  • 浅谈简历制作的四点注意事项
  • NLP学习路线图(十四):词袋模型(Bag of Words)
  • Go语言中的数据类型转换
  • 数据结构之ArrayList
  • 【 SpringCloud | 微服务 网关 】
  • CppCon 2014 学习:Unicode in C++
  • win10手动调整日期和时间
  • ​​技术深度解析:《鸿蒙5.0+:无感续航的智能魔法》​
  • Java基本数据类型、抽象类和接口、枚举、时间类、String类全面介绍
  • 【PhysUnits】15.7 引入P1后的加法运算(add.rs)
  • 【赵渝强老师】OceanBase部署工具
  • buuctf-web
  • 计算机基础——宏病毒防御与网络技术
  • MacroDroid安卓版:自动化操作,让生活更智能
  • Ubuntu取消开机用户自动登录
  • RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
  • 区块链可投会议CCF B--EDBT 2026 截止10.8 附录用率
  • unix/linux source 命令,其基本概念、定义、性质、定理
  • 科技修真的解决方案