卷积神经网络基础

卷积层

1.可参考此文章: https://blog.csdn.net/tjlakewalker/article/details/83275322
2.实现代码:

python 复制代码
import torch.nn as nn
conv = nn.Conv2d(in_channels=3,   #输入通道
                 out_channels=64, #输出通道
                 kernel_size=3,   #卷积核
                 stride=1)        #步长
print(conv)
# 结果:Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1))

3.输出矩阵的大小计算公式

python 复制代码
W:输入矩阵边长  F:过滤器边长  P:填充数  S:步长
输出的正方形矩阵边长:(W-F+2P)/S+1

反卷积

简单地说就是卷积的反向操作

pytorch中有两种反卷积方法

1.双线性插值上采样:

python 复制代码
import torch.nn as nn
bilinear_layer = nn.UpsamplingBilinear2d(size = None,             #期望的输出尺寸
                                         scale_factor = None)     #缩放因子:决定缩放的大小                                         

2.转置卷积

python 复制代码
import torch.nn as nn
transpose_conv = nn.ConvTranspose2d(in_channels = None,    #输入通道
                                    out_channels = None,   #输出通道
                                    kernel_size = None,    #卷积核
                                    stride = None,         #步长
                                    padding = None)       #填充数                              

转置卷积是通过学习的方式,即在训练中更新卷积核的参数,完成上采样,其计算结果更具鲁棒性,缺点是会增加模型的训练时间和训练参数;其代码比卷积层代码仅多了一个填充参数,其余参数不变

池化层

1.最大池化

python 复制代码
import torch.nn as nn
maxpool_layer = nn.MaxPool2d(kernel_size = None,    #卷积核
                             stride = None,         #步长
                             padding = None,        #填充数
                             dilation = None,       #膨胀数
                             return_indices = None, #是否返回元素的位置信息
                             ceil_mode=None)        #是否向上取整

2.平均池化

python 复制代码
import torch.nn as nn
average_layer = nn.AvgPool2d(kernel_size = None,        #卷积核
                             stride = None,             #步长
                             padding = None,            #填充数
                             ceil_mode=None)            #是否向上取整

3.Mixed pooling
4.Stochastic Pooling

特点:

1.池化层是对输入的特征图进行压缩

2.池化层可以使特征图变小简化计算

3.池化不断抽取局部区域的特征,但不关心区域的位置,目标位置在较小的移动之后扔保持相同的结果,在一定程度上可以增加了平移不变性

正则化层

全称Batch Normalization(BN),就是归一化处理

好处:减轻对初始数据的依赖;加速训练,学习率可以设置更高

坏处:一来batch的大小,batch不同,方差和均值的计算不稳定。------>BN层不适合batch较小的场景,也不适合RNN(RNN是动态网络结构,batch有长有短),只适合batch较大的场景

python 复制代码
import torch.nn as nn
conv = nn.Conv2d(in_channels=3,   #输入通道
                 out_channels=64, #输出通道
                 kernel_size=3,   #卷积核
                 stride=1)        #步长
BN = nn.BatchNorm2d(64)           #BN层参数紧跟卷积层的输出参数

全连接层

python 复制代码
import torch.nn as nn
linear = nn.Linear(in_features=None,   #输入通道数
                   out_features=None)  #输出通道数:一般是输出类别数

当特征图纬度过大时,可以通过几个全连接层完成降纬,最后一个全连接层的输出通道为最终的分类类别:

python 复制代码
import torch.nn as nn
linear_1 = nn.Linear(2048,512)  #通过两个全连接层由2048降至5
linear_2 = nn.Linear(512,5)  

代码参数含义可以参考torch中文社区查找

https://pytorch-cn.readthedocs.io/zh/latest/

相关推荐
yiyu07169 分钟前
3分钟搞懂深度学习AI:深度学习大爆发
人工智能·深度学习
CoovallyAIHub2 小时前
CVPR 2026 | MixerCSeg:仅2.05 GFLOPs刷新四大裂缝分割基准!解耦Mamba隐式注意力,CNN+Transformer+Mamba三
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
YOLO26-Pose 深度解读:端到端架构重新设计,姿态估计凭什么跨代领先?
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
化工厂气体泄漏怎么用AI检测?30张图3D重建气体泄漏场景——美国国家实验室NeRF新研究
深度学习·算法·计算机视觉
yiyu071615 小时前
3分钟搞懂深度学习AI:实操篇:池化层
人工智能·深度学习
CoovallyAIHub1 天前
OpenClaw 近 2000 个 Skills,为什么没有一个好用的视觉检测工具?
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
CVPR 2026 | 用一句话告诉 AI 分割什么——MedCLIPSeg 让医学图像分割不再需要海量标注
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Claude Code 突然变成了 66 个专家?这个 5.8k Star 的开源项目,让我重新理解了什么叫"会用 AI"
深度学习·算法·计算机视觉
yiyu07162 天前
3分钟搞懂深度学习AI:实操篇:卷积层
人工智能·深度学习
CoovallyAIHub2 天前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉