人工智能神经网络
【摘要】 一、深度学习行业标准:只有带可学习参数的层才算 “网络层”能更新权重、参与反向传播优化的才算层:卷积层 Conv2d:有卷积核权重、偏置 → 算层全连接 Linear:有权重矩阵、偏置 → 算层BatchNorm、ConvTranspose 等带参数层 → 算层无参数,只做固定数学运算,不算独立网络层MaxPool2d(最大池化)、AvgPool:窗口大小 / 步长写死,全程不训练、无参数R...
一、深度学习行业标准:只有带可学习参数的层才算 “网络层”
能更新权重、参与反向传播优化的才算层:
- 卷积层
Conv2d:有卷积核权重、偏置 → 算层 - 全连接
Linear:有权重矩阵、偏置 → 算层 - BatchNorm、ConvTranspose 等带参数层 → 算层
无参数,只做固定数学运算,不算独立网络层
- MaxPool2d(最大池化)、AvgPool:窗口大小 / 步长写死,全程不训练、无参数
- ReLU、Sigmoid、Tanh 激活函数:纯数学映射,无参数
- view、permute、flatten 维度变换:只是张量重塑
你的代码里:
你的模型带参层一共 4 个:conv1、conv2、fc 第一层 Linear、fc 第二层 Linear。
self.pool = nn.MaxPool2d(2,2) 只是一个固定运算模块,行业计数层数时直接忽略。
二、新手容易混淆的第二种:按「运算步骤」数操作(不专业)
如果不管有没有参数,只看代码里执行了多少个模块运算:
- conv1 卷积
- relu1 激活
- pool1 池化
- conv2 卷积
- relu2 激活
- pool2 池化
- fc1 全连接
- relu3 激活
- fc2 输出
这里池化只是其中一步操作,就算这么数也凑不出 5 层。
三、补充:为什么大家常说的 5 层 CNN 不含池化
经典 5 层 CNN(比如简化版 VGG、老式手写数字 5 层卷积网络)定义:
5 个卷积层(全部带训练参数),后面搭配池化、全连接;
池化只是卷积之间的下采样工具,不会计入那 “5 层”。
四、举个直观对比你的网络流程
输入(3,64,64)
→ conv1【算1层】 → ReLU(不算) → MaxPool(不算)
→ conv2【算2层】 → ReLU(不算) → MaxPool(不算)
→ flatten展平
→ Linear1【算3层】 → ReLU(不算)
→ Linear2【算4层输出】
池化全程只是中间压缩尺寸的工具,不计入网络层数。
简单总结
- 池化层代码确实存在,会执行下采样操作;
- 但它无训练参数,专业统计网络层数时不算一层;
- 你这个模型不存在 5 层结构,只有 2 卷积 + 2 全连接共 4 个有效训练层。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)