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

Python Day41

Task:
1.数据增强
2.卷积神经网络定义的写法
3.batch归一化:调整一个批次的分布,常用与图像数据
4.特征图:只有卷积操作输出的才叫特征图
5.调度器:直接修改基础学习率
卷积操作常见流程如下:

  1. 输入 → 卷积层 → Batch归一化层(可选) → 池化层 → 激活函数 → 下一层
    2.Flatten -> Dense (with Dropout,可选) -> Dense (Output)

1. 数据增强(Data Augmentation)

  • 作用:通过人工扩展训练数据集,提升模型泛化能力,防止过拟合。
  • 常见方法(图像领域):
    • 几何变换:旋转、翻转、缩放、裁剪、平移。
    • 颜色变换:亮度、对比度、饱和度调整。
    • 噪声注入:高斯噪声、椒盐噪声。
    • 高级方法:Mixup、CutMix、AutoAugment(自动搜索增强策略)。

2. 卷积神经网络(CNN)定义写法

以PyTorch为例的典型结构:

import torch.nn as nnclass CNN(nn.Module):def __init__(self, num_classes=10):super(CNN, self).__init__()self.features = nn.Sequential(nn.Conv2d(3, 16, kernel_size=3, padding=1),  # 输入通道3,输出16nn.BatchNorm2d(16),  # BatchNorm层nn.ReLU(),nn.MaxPool2d(2, 2),  # 池化层nn.Conv2d(16, 32, kernel_size=3, padding=1),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(2, 2))self.classifier = nn.Sequential(nn.Flatten(),  # 展平多维特征图nn.Linear(32 * 8 * 8, 128),  # 假设展平后大小为32*8*8nn.Dropout(0.5),  # Dropout层nn.Linear(128, num_classes))def forward(self, x):x = self.features(x)x = self.classifier(x)return x

3. Batch归一化(Batch Normalization, BN)

  • 作用:对每个批次的输入进行标准化(均值0、方差1),加速训练并缓解梯度消失。
  • 公式
    [
    \hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \quad \text{,} \quad y = \gamma \hat{x} + \beta
    ]
    • (\mu_B, \sigma_B):批次均值/方差;(\gamma, \beta):可学习参数。
  • 注意事项
    • 训练与推理时行为不同(推理时使用全局统计量)。
    • 对batch size敏感(小batch可能效果差)。

4. 特征图(Feature Map)

  • 定义:卷积层输出的张量,每个通道对应一个滤波器提取的特征。
  • 特点
    • 空间维度(高/宽)可能因步长或填充改变。
    • 深度维度等于滤波器数量(如nn.Conv2d(16, 32, ...)输出深度32)。

5. 学习率调度器(LR Scheduler)

  • 作用:动态调整学习率以平衡训练速度与稳定性。
  • 常见类型
    • StepLR:每隔固定epoch衰减。
    • CosineAnnealingLR:余弦退火调整。
    • ReduceLROnPlateau:基于验证指标动态调整。
  • PyTorch示例
    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=5, gamma=0.1)
    # 每个epoch调用 scheduler.step()
    

卷积操作标准流程补充

  1. 卷积块(可重复堆叠):

    • 卷积层 → BN层 → 激活函数 → 池化层
      顺序可调,如某些设计将激活置于BN后
  2. 分类头

    • Flatten() → 全连接层(+Dropout)→ 输出层
      现代网络可能用全局平均池化替代Flatten
  3. 扩展设计

    • 残差连接(ResNet):解决深层网络梯度消失。
    • 分组卷积(如MobileNet):减少计算量。

http://www.lqws.cn/news/71803.html

相关文章:

  • Python趣学篇:用Pygame打造绚烂流星雨动画
  • C++.cstring string
  • 第七章.正则表达式
  • 电子电路:4017计数器工作原理解析
  • NodeJS全栈WEB3面试题——P7工具链 测试
  • PHP7+MySQL5.6 查立得轻量级公交查询系统
  • 8.linux文件与文件夹内处理命令cp,mv,rm
  • AlmaLinux OS 10 正式发布:兼容 RHEL 10 带来多项技术革新
  • JavaSE知识总结(集合篇) ~个人笔记以及不断思考~持续更新
  • 《深度探索C++对象模型》阅读笔记(完整版)
  • Linux之进程间通信
  • AJAX对于XML和JSON的处理
  • Missashe考研日记—Day51-Day57
  • 企业级开发中的 maven-mvnd 应用实践
  • window ollama部署模型
  • QT入门学习(二)---继承关系、访问控制和变量定义
  • C++ 标准输入输出 -- <iostream>
  • 修改vscode切换上一个/下一个标签页快捷键
  • demo_win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok公网测试
  • 安装DockerDocker-Compose
  • 【DBA】MySQL经典250题,改自OCP英文题库中文版(2025完整版)
  • AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆
  • 短视频平台差异视角下开源AI智能名片链动2+1模式S2B2C商城小程序的适配性研究——以抖音与快手为例
  • 【Doris基础】Apache Doris中的Coordinator节点作用详解
  • 工作流引擎-18-开源审批流项目之 plumdo-work 工作流,表单,报表结合的多模块系统
  • 深入解析 Python 字符串方法:从基础到高级应用
  • 深度学习和神经网络 卷积神经网络CNN
  • DAY 41 简单CNN
  • 传送文件利器wormhole的使用方法
  • 打开一个新的Maven工程要做的事情