预览

神经网络工具箱有四部分构成:神经网络核心组件、构建神经网络的主要工具、构建模型、训练模型。
神经网络核心组件
**层(Layer):**神经网络的基本结构单元,通过权重等参数对输入张量进行数据变换(如卷积、线性运算),输出新张量
**模型(Model):**由多个 "层" 按特定逻辑组合而成的整体网络,实现从输入数据到输出结果的完整映射过程
**损失函数:**量化模型预测值(Y')与真实标签(Y)之间差异的目标函数,是参数学习的 "指南针"
优化器: 根据损失函数计算的梯度,采用优化算法(如 SGD、Adam)更新模型参数,最小化损失值(梯度下降法:找损失函数取最小值时的参数)

损失函数:预测值与真实值之间的差距---通过优化器(梯度下降法)计算权重与偏置【权重与偏置是参数】找到最小值
构建神经网络的主要工具
工具类型 | 特性 | 适用场景 |
---|---|---|
nn.Module | 面向对象编程,需继承使用;自动管理可学习参数(weight/bias);支持模型容器嵌套 | 卷积层(Conv2d)、全连接层(Linear)、Dropout 层等带可学习参数的组件 |
nn.functional | 纯函数式调用,无需实例化;需手动定义和传入参数;无状态管理功能 | 激活函数(ReLU)、池化层(max_pool2d)、损失计算(cross_entropy)等无参数 / 参数固定的操作 |

linear指全连接层(卷积神经网络中)
Cohv*指卷积层
*norn指标准化
*Aactive指激活函数
*Loss指损失函数
关键差异总结
- 使用方式 :
- nn.Xxx:先实例化(如
model = nn.Linear(784, 300)
),再调用实例处理数据 - nn.functional.xxx:直接调用函数(如
F.linear(x, weight, bias)
),需手动传入参数
- nn.Xxx:先实例化(如
- 参数管理 :
- nn.Xxx:自动封装和管理参数,可通过
model.parameters()
提取所有可学习参数 - nn.functional.xxx:需手动定义
weight
和bias
,无法自动纳入模型参数管理
- nn.Xxx:自动封装和管理参数,可通过
- 状态切换 :
- nn.Dropout:调用
model.eval()
后自动关闭 Dropout(适配测试阶段) - F.dropout:需手动设置
training
参数(如F.dropout(x, training=True)
)切换状态
- nn.Dropout:调用
核心功能与工作原理
- 参数自动管理 :
- 继承
nn.Module
后,在__init__
中定义的nn.Xxx
层(如 Linear、Conv2d),其参数会被自动注册到模型的参数列表中 - 可通过
model.named_parameters()
查看参数名称及数值,便于调试和优化
- 继承
- 正向传播定义 :
- 必须重写
forward()
方法,定义数据在模型中的流动逻辑(从输入到输出的计算过程) - 反向传播由 PyTorch 的
autograd
自动实现,无需手动编写梯度计算代码
- 必须重写