type
Post
status
Published
date
Aug 10, 2025
slug
PyTorch3
summary
PyTorch深度学习入门笔记P15-25,包含 神经网络的基本骨架-nn.Module的使用、土堆说卷积操作、神经网络-卷积层、神经网络-最大池化的使用、神经网络-非线性激活、神经网络-线性层及其他层介绍、神经网络-搭建小实战和Sequential的使用、损失函数与反向传播、优化器、现有网络模型的使用及修改 和 网络模型的保存与读取
tags
Python
机器学习
PyTorch
category
机器学习
icon
password
@ZZHow(ZZHow1024)
参考课程:
【PyTorch深度学习快速入门教程【小土堆】】
P15. 神经网络的基本骨架-nn.Module的使用
- 前向传播:input → forward → output
- 案例演示:p15_nn_module.py
P16. 土堆说卷积操作
- 概念:卷积是一种数学运算,广泛应用于信号处理、图像处理和深度学习(尤其是卷积神经网络CNN)。其核心思想是:用一个小的“滑动窗口”(卷积核/滤波器)在输入数据上滑动,计算局部区域的加权和,从而提取局部特征。
- 核心组件
- 输入(Input)
- 形式:通常是多维数组(如图像是2D矩阵,视频是3D张量)。
- 卷积核(Kernel/Filter)
- 作用:提取输入的局部特征(如边缘、颜色变化)。
- 卷积操作(Convolution Operation)
- 步骤:
- 滑动窗口:卷积核在输入上按步长(stride)滑动(如步长=1时逐像素移动)。
- 局部相乘求和:卷积核与当前覆盖的输入区域逐元素相乘后求和,得到输出的一个值。
- 填充(Padding)(可选):在输入边缘填充0,控制输出尺寸。
- 输出(Feature Map)
- 作用:卷积操作的结果,表示输入数据在特定特征上的响应强度。
torch.nn.functional.conv2d- 作用:实现 2D 卷积操作 的底层函数(与
nn.Conv2d模块功能相同,但更灵活)。 - 常用参数
input(必需):输入张量,格式为 4D 张量,表示一批图像数据。weight(必需):卷积核权重,格式为 4D 张量。bias(默认值:None):偏置项,格式为 1D 张量。stride(默认值:1):控制卷积核滑动的步长(步幅)。padding(默认值:0):在输入张量的边缘填充0,控制输出尺寸。dilation(默认值:1):控制卷积核的空洞率(dilated convolution),扩大感受野。groups(默认值:1):控制分组卷积的分组数,用于减少参数量或实现特定结构(如深度可分离卷积)。
- 案例演示:p16_nn_conv.py
P17. 神经网络-卷积层
torch.nn.conv2d- 作用:用于实现 2D 卷积 的标准模块(类),它封装了
torch.nn.functional.conv2d的功能,并自动管理权重和偏置参数。 - 常用参数
in_channels(必需):输入数据的通道数。out_channels(必需):卷积核的数量(即输出通道数),决定了输出特征图的深度。kernel_size(必需):卷积核的大小(高度和宽度)。stride(默认值:1):控制卷积核滑动的步长(步幅)。padding(默认值:0):在输入张量的边缘填充0,控制输出尺寸。padding_mode(默认值:'zeros'):指定填充模式(仅当padding>0时生效)。dilation(默认值:1):控制卷积核的空洞率(dilated convolution),扩大感受野。groups(默认值:1):控制分组卷积的分组数,用于减少参数量或实现特定结构(如深度可分离卷积)。bias(默认值:True):是否在卷积后添加偏置项。
- 案例演示:p17_nn_conv2d.py
P18. 神经网络-最大池化的使用
torch.nn.MaxPool2d- 作用:对输入特征图进行下采样(降维),保留局部区域的最大值以提取显著特征并减少计算量。
- 常用参数
kernel_size(必需):池化窗口的大小(高度和宽度)。stride(默认值:None,即等于kernel_size):控制池化窗口滑动的步长(步幅)。padding(默认值:0):在输入特征图的边缘填充0,控制输出尺寸。dilation(默认值:1):控制池化窗口的空洞率(dilated pooling),扩大感受野。return_indices(默认值:False):是否返回最大值在输入特征图中的索引位置。ceil_mode(默认值:False):控制输出尺寸的计算方式。
- 案例演示:p18_nn_maxpool.py
P19. 神经网络-非线性激活
torch.nn.ReLU- 作用:将所有负值置为
0,正值保持不变。 - 常用参数
inplace(默认值:False):是否进行原地操作(in-place operation),即直接修改输入张量的值,而非创建新的张量。
torch.nn.Sigmoid的常用参数- 作用:将输入 x 映射到
(0, 1)区间,输出值可解释为概率。
- 案例演示:p19_nn_relu.py
P20. 神经网络-线性层及其他层介绍
- 总结对比表
层类型 | 核心功能 | 典型应用场景 |
Normalization | 数据归一化 | 加速训练,稳定梯度 |
Recurrent | 序列建模(时序依赖) | NLP、时间序列预测 |
Transformer | 自注意力机制 | 机器翻译、视觉Transformer |
Linear | 线性变换 | 分类器、特征映射 |
Dropout | 正则化(防过拟合) | 所有深度学习模型 |
Sparse | 稀疏数据高效处理 | 推荐系统、图神经网络 |
- 线性层
torch.flatten- 功能:将输入张量的指定维度范围(从
start_dim到end_dim)合并为一个维度,生成一个新的展平后的张量。 - 常用参数
input(必须):输入的任意维度张量(如 1D、2D、3D、4D 等)。start_dim(默认为 0):开始展平的维度索引(从该维度起,后续维度会被合并)。end_dim(默认为 -1):结束展平的维度索引(到该维度止,所有中间维度会被合并)。负数表示从后往前计数(如-1表示最后一个维度)。torch.nn.Linear- 功能:对输入张量的最后一个维度执行线性变换。
- 常用参数
in_features(必需):输入张量最后一个维度的大小(即输入特征的维度)。out_features(必需):输出张量最后一个维度的大小(即输出特征的维度)。bias(默认值:True):是否为线性变换添加偏置项 b。
- 案例演示:p20_nn_linear.py
P21. 神经网络-搭建小实战和Sequential的使用
- CIFAR10 模型结构
torch.nn.Sequential的功能:将多个神经网络模块(如卷积层、全连接层、激活函数等)按定义的顺序组合成一个整体模型,数据会依次通过每个模块,无需手动编写前向传播代码。
- 案例演示:p21_nn_seq.py
P22. 损失函数与反向传播
torch.nn.L1Loss
torch.nn.CrossEntropyLoss
- 反向传播
result_loss.backward()
P23. 优化器
- 什么是优化器(Optimizer)
torch.optim中常见的优化器
- 共同参数
- 使用流程
- 案例演示:p23_nn_optim.py
P24. 现有网络模型的使用及修改
torchvision.models核心功能
pretrained参数详解
- 修改现有网络模型
P25. 网络模型的保存与读取
- 保存方式 1(模型结构 + 模型参数)
- 保存方式 2(模型参数)
PyTorch深度学习入门笔记P15-25