文章内容课堂总结


 1. 神经网络核心组件  
- 层(Layer)  
  - 输入张量的转换器(如全连接层 `nn.Linear`、卷积层 `nn.Conv2d`)。  
- 模型(Model)  
  - 层的组合(如CNN、ResNet)。  
- 损失函数(Loss Function)  
  - 目标函数的数学表达(如交叉熵损失 `nn.CrossEntropyLoss`)。  
- 优化器(Optimizer)  
  - 参数更新算法(如SGD、Adam)。  

---

 2. PyTorch构建工具对比  
 工具类型  特点   
  
 `nn.Module`  继承自基类,自动管理权重/偏置,支持序列化与状态转换(如训练/测试模式切换)。   
 `nn.functional`  纯函数形式,需手动管理参数,无法直接与 `nn.Sequential` 结合使用。   

关键区别:  
- `nn.Module` 实例化后可链式调用(如 `model(input)`),而 `nn.functional` 需传递参数(如 `F.relu(x)`)。  
- Dropout 层在 `nn.Module` 中可通过 `model.eval()` 自动切换状态,`nn.functional` 需手动控制。  

---

 3. 模型构建方法  
 (1) 继承 `nn.Module`  
- 步骤:  
  1. 定义 `__init__()` 初始化层和参数。  
  2. 重写 `forward()` 定义前向逻辑。  
- 示例代码:  
  python
  class CustomModel(nn.Module):
      def __init__(self):
          super().__init__()
          self.layers = nn.Sequential(nn.Linear(10, 5), nn.ReLU())
      
      def forward(self, x):
          return self.layers(x)  

 (2) 使用 `nn.Sequential`  
- 方法1:可变参数顺序构建(无层名称):  
  python
  model = nn.Sequential(nn.Linear(3, 1), nn.Sigmoid())  
- 方法2:命名层(通过 `add_module` 或 `OrderedDict`):  
  python
  model = nn.Sequential(OrderedDict(
      ('linear', nn.Linear(3, 1)),
      ('sigmoid', nn.Sigmoid())
  ))  

 (3) 模型容器  
- `nn.Sequential`:线性堆叠层。  
- `nn.ModuleList`:动态列表管理子模块(支持灵活索引)。  
- `nn.ModuleDict`:字典映射子模块名称到实例(便于按需访问)。  

---

 4. 自定义网络模块(以 ResNet18 为例)  
- 残差块设计:  
  1. 直接相加型:输入 → 卷积 → 激活 → 输出与输入相加。  
  2. 通道调整型:通过 `1×1` 卷积统一输入/输出形状。  
- 组合残差块:堆叠多个残差块形成 ResNet18,解决梯度消失问题。  

---

 5. 模型训练流程  
1. 数据准备  
   - 加载数据集(如 MNIST、CIFAR-10)。  
   - 数据预处理(归一化、数据增强)。  
2. 组件定义  
   - 损失函数(如 `nn.CrossEntropyLoss`)。  
   - 优化器(如 `torch.optim.Adam`)。  
3. 训练循环  
   - 前向传播 → 计算损失 → 反向传播 → 更新参数。  
4. 验证循环  
   - 切换模型为测试模式 (`model.eval()`)。  
   - 计算验证集准确率。  
5. 结果可视化  
   - 绘制损失曲线、准确率曲线。  

---

 备注  
- 代码复用性:优先使用 `nn.Module`(自动管理参数),避免重复定义权重。  
- 状态管理:训练阶段 (`model.train()`) 和测试阶段 (`model.eval()`) 需手动切换。  
- 残差网络优势:通过跳跃连接提升梯度流动效率,适用于深层网络。  


一、神经网络核心组件
1. 四大核心要素:
   - 层(Layer):神经网络基本结构,处理张量转换
   - 模型(Model):由多个层构成的网络结构
   - 损失函数(Loss Function):参数学习的目标函数
   - 优化器(Optimizer):最小化损失函数的算法

二、PyTorch构建工具对比
1. nn.Module特点:
   - 继承自Module类
   - 自动参数管理
   - 支持与nn.Sequential结合
   - 自动处理训练/测试状态(如Dropout)
   - 示例:nn.Linear, nn.Conv2d

2. nn.functional特点:
   - 纯函数式接口
   - 需手动管理参数
   - 不支持模型容器
   - 示例:激活函数,池化操作

三、模型构建方法
1. 主要方式:
   - 继承nn.Module基类
   - 使用nn.Sequential顺序构建
     * 三种实现方式:
       - 可变参数
       - add_module方法
       - OrderedDict字典
   - 结合模型容器:
     * nn.Sequential:顺序结构
     * nn.ModuleList:可迭代模块列表
     * nn.ModuleDict:键值对模块字典

四、自定义网络模块
1. 残差块类型:
   - 基础型:输入输出直接相加 + ReLU
   - 调整型:通过1×1卷积统一维度
   - 组合应用:构建ResNet18网络结构

五、模型训练流程
1. 标准步骤:
   1) 数据加载与预处理
   2) 定义损失函数(如交叉熵)
   3) 选择优化器(如SGD/Adam)
   4) 训练循环(前向/反向传播)
   5) 验证测试流程
   6) 结果可视化

六、关键注意事项
1. 开发建议:
   - 优先使用nn.Module管理参数
   - 合理选择模型容器组织网络结构
   - 注意训练/测试模式切换(model.train()/eval())
   - 残差连接需处理维度匹配问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值