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 = model
        self.gradients = None
        self.activations = None
        target_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获取梯度和激活值生成热力图

相关推荐
92year15 分钟前
用Google ADK从零搭一个能调工具的AI Agent:Python实操全过程
python·ai·mcp
woxihuan12345635 分钟前
SQL删除数据时存在依赖关系_设置外键级联删除ON DELETE
jvm·数据库·python
Jetev1 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
蛐蛐蛐1 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾
m0_702036531 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
代钦塔拉2 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
2401_846339562 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_957780842 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude
2601_957780842 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
zhaoyong2223 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python