资讯动态

卷积与池化:从原理到实践,掌握CNN核心操作

发布时间:2026/8/5 4:17:33 来源:尧图企业网站定制
1. 项目概述从“黑箱”到“白盒”理解卷积与池化的本质如果你刚开始接触深度学习尤其是计算机视觉那么“卷积神经网络”这个词一定让你既兴奋又困惑。兴奋的是它让机器“看懂”图片、识别物体变得如此强大困惑的是那些听起来很数学的“卷积”、“池化”操作到底在做什么为什么它们如此有效很多人把神经网络当作一个黑箱输入数据得到结果中间过程不求甚解。但如果你想真正掌握它甚至去调优、去创新就必须把这个黑箱打开看看里面的核心齿轮是如何转动的。今天我们就来彻底拆解CNN中最基础、也最核心的两个操作卷积和池化。这不是一堂数学课而是一次从直觉到实践、从原理到代码的深度探索。我会用最直白的语言和类比让你不仅知道它们是什么更理解它们为什么能工作以及在实践中如何选择和调整它们。无论你是想用Python和TensorFlow/PyTorch搭建自己的第一个CNN模型还是想深入理解YOLO、ResNet等先进架构的底层逻辑这篇文章都将是你坚实的起点。2. 卷积操作神经网络如何“看见”特征2.1 卷积的直观理解像手电筒扫描的“特征探测器”抛开复杂的数学公式我们可以把卷积想象成一个拿着特定“图案模板”即卷积核的手电筒在一张大的图片输入特征图上从头到尾、从左到右地滑动扫描。每次手电筒照亮图片的一小块区域比如3x3的像素块我们就将这个小区域里的像素值与手电筒自带的“图案模板”上的数值进行对应位置的乘法然后把所有乘积结果加起来得到一个单一的数值。这个数值就代表了图片的这一小块区域与我们的“模板”有多像。如果非常像得到的数值就会很大或很小取决于模板设计如果完全不像数值可能就接近0。这个滑动、相乘、相加的过程就是卷积运算。最终我们会得到一张新的“图”这张新图上的每一个点都对应了原图某个区域与卷积核的匹配程度。这张新图我们称之为“特征图”或“激活图”。为什么需要卷积与传统全连接神经网络相比卷积带来了两大核心优势局部连接每个神经元输出特征图上的一个点只与输入图像的一小块区域连接而不是整张图。这更符合生物视觉系统的感知方式视网膜上的细胞只感受局部的光刺激。参数共享同一个卷积核模板会滑过整张图片。这意味着无论模板在图片的左上角还是右下角我们都在用同一套参数去检测同一种特征比如边缘、纹理。这极大地减少了需要训练的参数数量让网络更容易训练也具备了平移不变性即特征无论出现在图片的哪个位置都能被检测到。2.2 卷积层的核心参数详解与计算理解了直观概念我们来看看定义一次卷积操作需要哪些“旋钮”可以调节以及它们如何影响输出。2.2.1 卷积核这是卷积的灵魂。它通常是一个小的、正方形的矩阵比如3x3, 5x5。核里的每一个数值都是一个需要通过网络训练学习得到的权重。不同的核学习检测不同的特征有的核学习检测垂直边缘如[[-1,0,1],[-2,0,2],[-1,0,1]]有的学习检测水平边缘有的学习检测特定颜色或纹理。2.2.2 步长步长定义了我们的“手电筒”每次滑动时移动的像素数。步长为1是最常见的选择它意味着我们密集地扫描每一个可能的位置生成的特征图尺寸较大保留的信息更精细。步长为2或更大则相当于跳着扫描会使得输出特征图的宽度和高度缩小在减少计算量的同时也引入了一定的信息损失。通常在网络的深层我们会增大步长来降低特征图的空间尺寸。2.2.3 填充当我们在图片边缘滑动卷积核时会出现一个问题核的中心可能无法对准边缘的像素。例如一个3x3的核其中心需要对准一个像素那么在图片的四个角上核就会“悬空”。为了解决这个问题我们引入了“填充”即在输入图片的周围额外添加一圈像素。最常见的填充方式是“零填充”即添加的像素值全部为0。填充主要有两个目的控制输出尺寸通过填充我们可以让输出特征图的尺寸与输入保持一致当步长为1时。这对于构建深度网络时保持特征图尺寸非常有用。保留边缘信息让卷积核也能公平地处理到图像边缘的像素避免边缘信息在多次卷积后过快丢失。2.2.4 输出尺寸计算公式这是一个必须掌握的实用公式。给定输入尺寸、卷积核尺寸、步长和填充我们可以精确计算出输出特征图的尺寸输出高度 (输入高度 2*填充高度 - 卷积核高度) / 步长高度 1输出宽度 (输入宽度 2*填充宽度 - 卷积核宽度) / 步长宽度 1通常我们使用正方形核和对称填充所以高度和宽度公式相同。例如输入为32x32的图片使用3x3卷积核步长为1填充为1那么输出尺寸为(32 2*1 - 3)/1 1 32。输出仍然是32x32。2.2.5 深度通道数一个卷积层通常不止一个卷积核。假设我们有N个不同的3x3卷积核那么对于同一个输入我们会得到N张不同的特征图。在输出时我们会将这N张特征图在“通道”维度上堆叠起来。因此输出特征图的通道数就等于该层卷积核的个数。每个通道代表了一种被提取出来的特征。对于多通道输入例如彩色图片有RGB三个通道卷积核的深度会自动与输入通道数匹配。一个针对3通道输入的3x3卷积核其实际尺寸是3x3x3。计算时它在每个输入通道上进行卷积然后将三个通道的结果相加再加上一个偏置项最终得到一个输出点。所以无论输入有多少个通道一个卷积核只产生一个输出通道。2.3 卷积的变体与高级形式随着网络设计的发展一些特殊的卷积形式被发明出来以解决特定问题。2.3.1 1x1卷积这可能是最容易被低估的卷积操作。一个1x1的卷积核其感受野就是单个像素点它并不融合空间信息。那么它的作用是什么跨通道的信息整合与降维假设输入特征图有C_in个通道使用N个1x1卷积核相当于对每个空间位置上的C_in维向量做了一次全连接线性变换将其映射到N维。这可以灵活地增加或减少通道数是构建如Inception模块和进行网络“瓶颈”设计的关键。引入非线性在1x1卷积后通常会接一个激活函数如ReLU从而在通道维度上引入了额外的非线性表达能力而计算成本极低。2.3.2 空洞卷积也叫膨胀卷积。它的核心思想是在标准的卷积核元素之间插入“空洞”零值从而在不增加参数数量、不进行下采样池化的情况下指数级地扩大卷积核的感受野。例如一个普通的3x3卷积核其感受野就是3x3。但如果设置膨胀率为2这个核就变成了一个“带洞”的核它在水平和垂直方向上每隔一个像素取一个权重实际等效于一个5x5的核但只有9个非零参数。空洞卷积在需要捕捉大范围上下文信息的任务中非常有用如语义分割如DeepLab系列模型。2.3.3 深度可分离卷积这是MobileNet等轻量化网络的核心。它将标准卷积分解为两个独立的步骤深度卷积使用M个与输入通道数相同的KxK卷积核每个核只负责一个输入通道进行空间卷积。这一步负责过滤空间特征。逐点卷积使用N个1x1的卷积核对上一步得到的M个通道的结果进行混合。这一步负责组合通道特征。标准卷积的计算量大约是K*K*C_in*C_out*H_out*W_out。而深度可分离卷积的计算量约为K*K*C_in*H_out*W_out C_in*C_out*H_out*W_out。当使用3x3卷积时深度可分离卷积能将计算量减少到原来的1/8到1/9同时模型精度下降很小是端侧部署的利器。注意深度可分离卷积虽然高效但并非在所有场景下都能完全替代标准二维卷积。在网络的浅层特征图尺寸较大标准卷积的密集通道交互可能对捕捉基础、复杂的纹理模式更有效。通常深度可分离卷积更适用于网络的中后层用于构建轻量化的深度网络。3. 池化操作智慧地“压缩”与“抽象”3.1 池化的使命为什么需要它经过卷积层我们得到了一张张特征图记录了诸如“这里有一条竖边”、“那里有一块红色纹理”等信息。但这些特征图通常还很大并且对特征的精确位置非常敏感。图片中一只猫的耳朵向左偏移了2个像素对于卷积特征图来说可能就是完全不同的激活模式。但我们人类识别猫时并不关心耳朵的精确像素位置。池化层就是为了解决这个问题而生的。它的核心作用有两个降维与减少计算量通过对局部区域进行下采样显著减小特征图的空间尺寸宽度和高度从而大幅减少后续层的参数和计算量。引入平移、旋转、尺度等不变性池化操作尤其是最大池化只保留一个区域内的最显著特征。只要这个显著特征比如猫耳朵的尖角还在这个池化窗口内无论它具体在窗口的哪个位置池化后的输出都是一样的。这使网络对输入的小范围形变、平移更具鲁棒性。3.2 最大池化 vs. 平均池化两种主流策略池化操作和卷积类似也是一个滑动窗口但操作不是加权求和而是简单的聚合函数。3.2.1 最大池化这是目前最主流、效果通常也最好的池化方法。对于窗口覆盖的区域它只输出该区域内所有值的最大值。优点它抓住了这个区域最突出的特征具有更强的非线性。在实践中它通常能保留更好的纹理信息性能优于平均池化。直观理解好比在判断一个区域里“有没有猫耳朵”只要耳朵最尖的那个点最大值在我们就认为这里有耳朵而不关心耳朵的精确轮廓。3.2.2 平均池化输出窗口覆盖区域内所有值的平均值。优点能保留更多的背景信息平滑噪声。缺点可能会弱化最显著的特征有时性能不如最大池化。应用场景在网络的最后将整个特征图进行全局平均池化然后送入分类器是现在很多网络如GoogLeNet, ResNet替代全连接层的标准做法可以极大地减少参数并防止过拟合。3.3 池化的参数与计算池化层的参数比卷积层简单得多池化窗口大小常见的有2x2,3x3。步长通常与窗口大小相等。例如2x2池化配合步长2意味着每次池化窗口移动时都不重叠直接将特征图尺寸减半。步长也可以小于窗口大小产生重叠池化但较少见。填充池化层有时也会使用填充通常是零填充以更精确地控制输出尺寸但不如卷积层常见。池化输出尺寸计算公式与卷积公式完全相同。例如输入28x28的特征图经过2x2最大池化步长为2无填充则输出尺寸为(28 - 2)/2 1 14即14x14。3.4 池化层的演进与替代方案虽然池化层非常经典但在现代网络设计中其地位也在发生变化。带步长的卷积替代池化越来越多的架构如ResNet, VGG发现直接使用步长为2的卷积层可以在下采样的同时进行特征提取效果往往优于先卷积再池化的组合。这成为了当前设计的主流趋势。全局池化如前所述全局平均池化将整个特征图每个通道的所有值取平均得到一个通道数的向量完美替代了 flatten 全连接层的操作是网络尾部设计的黄金标准。可学习的池化如分数阶最大池化它通过引入可学习的参数使下采样过程不再是固定的取最大或平均而能根据数据自适应调整。但这增加了复杂性应用不如固定池化广泛。4. 从理论到实践构建你的第一个卷积模块理解了原理我们动手用代码以PyTorch为例和实际数据流看看卷积和池化是如何串联工作的。4.1 一个标准的卷积-池化模块实现假设我们处理一张1x28x28的灰度手写数字图像MNIST数据集我们设计第一个卷积块。import torch import torch.nn as nn # 定义一个简单的卷积-池化模块 class ConvPoolBlock(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() # 卷积层输入通道in_channels, 输出通道out_channels, 3x3卷积核填充1以保持尺寸 self.conv nn.Conv2d(in_channels, out_channels, kernel_size3, padding1) # 激活函数引入非线性 self.relu nn.ReLU(inplaceTrue) # 池化层2x2最大池化步长2将尺寸减半 self.pool nn.MaxPool2d(kernel_size2, stride2) def forward(self, x): x self.conv(x) # 形状: [batch, in_channels, H, W] - [batch, out_channels, H, W] x self.relu(x) # 形状不变引入非线性 x self.pool(x) # 形状: [batch, out_channels, H, W] - [batch, out_channels, H/2, W/2] return x # 初始化模块和模拟数据 block ConvPoolBlock(in_channels1, out_channels32) input_tensor torch.randn(4, 1, 28, 28) # 批大小4, 通道1, 高28, 宽28 # 前向传播 output_tensor block(input_tensor) print(f输入尺寸: {input_tensor.shape}) print(f输出尺寸: {output_tensor.shape}) # 应为: torch.Size([4, 32, 14, 14])数据流解析输入[4, 1, 28, 28]代表4张1x28x28的图片。经过Conv2d(1, 32, kernel_size3, padding1)卷积核尺寸3x3填充1步长默认为1。根据公式输出高度 (28 2*1 - 3)/1 1 28。输出宽度同理。卷积核数量为32因此输出通道数为32。输出形状变为[4, 32, 28, 28]。经过ReLU对每个元素进行max(0, x)操作形状不变仍是[4, 32, 28, 28]。经过MaxPool2d(kernel_size2, stride2)池化窗口2x2步长2。输出高度 (28 - 2)/2 1 14。输出宽度同理。输出形状变为[4, 32, 14, 14]。这个模块完成了从原始图像中提取32种基础特征并将特征图空间尺寸压缩到原来一半的任务。4.2 参数数量与计算量分析理解参数和计算量对于模型设计和优化至关重要。对于上面的卷积层nn.Conv2d(1, 32, kernel_size3, padding1)参数数量每个3x3卷积核有3*39个权重参数。由于输入是单通道所以每个核对应9个权重。我们有32个这样的核所以权重总数为9 * 32 288。此外每个输出通道还有一个偏置参数共32个。因此该层总参数量为288 32 320。可以看到即使输出通道增加到32参数量依然很少。如果换成全连接层将28*28784个像素连接到32个神经元参数量将是784*323225120是卷积层的近80倍计算量通常用浮点运算次数衡量。对于一次卷积输出特征图上一个点的计算需要kernel_height * kernel_width * in_channels次乘法和同样次数的加法。以我们的例子计算一个输出点3*3*19次乘加运算通常将一次乘加算作一次FLOP。输出特征图有28*28*3225088个点所以该层理论计算量约为9 * 25088 225,792FLOPs。池化层没有可学习参数计算量也远小于卷积层。4.3 可视化特征图告诉我们什么为了更直观地理解我们可以可视化第一层卷积核学习到的权重以及它们产生的特征图。卷积核可视化在训练好的CNN中第一层的卷积核权重通常可以被直接可视化。它们往往会学习到类似Gabor滤波器不同方向、尺度的边缘检测器和颜色斑点的基础模式。这是因为网络底层负责捕捉最基础的特征。特征图可视化将一张输入图片如一张猫的图片通过第一个卷积层得到32张特征图。你会发现有些特征图对猫的垂直边缘如胡须、身体轮廓反应强烈高亮有些对水平边缘如地面反应强烈有些则可能对特定纹理如毛发有响应。这直观地展示了卷积层作为“特征探测器”的工作成果。实操心得在调试网络时如果发现训练效果不佳可视化第一层的卷积核是个很好的诊断方法。如果训练后卷积核的权重看起来还是随机噪声没有形成明显的边缘或纹理模式很可能意味着网络没有成功学习可能是学习率设置不当、数据有问题或网络结构太深难以训练。5. 网络架构中的卷积与池化经典模式与设计哲学单独理解卷积和池化后我们看看它们是如何在经典网络架构中协同工作的。5.1 VGGNet堆叠小卷积核的典范VGGNet的核心思想是使用连续的多个小尺寸卷积核3x3来替代大尺寸卷积核如5x5, 7x7。为什么是3x3感受野等效两个堆叠的3x3卷积层其有效感受野是5x5第一个3x3看原始区域第二个3x3在看第一个3x3的输出时相当于看到了原始区域上更大的范围。三个堆叠的3x3卷积层感受野等效于一个7x7的卷积层。参数更少一个7x7卷积核的参数是49 * C_in * C_out。而三个3x3卷积核假设中间层通道数也是C_out的参数是3 * (9 * C_in * C_out) 27 * C_in * C_out此处为简化估算实际中间层通道数可能变化。参数减少了约44%。非线性更多每个卷积层后都跟有ReLU激活函数。堆叠三个3x3卷积层引入了三次非线性变换而单个7x7卷积层只引入一次。更多的非线性使模型的判别能力更强。VGGNet通常采用“卷积-卷积-池化”的块状结构逐步加深网络并降低特征图尺寸。例如[Conv3-64] - [Conv3-64] - MaxPool - [Conv3-128] - [Conv3-128] - MaxPool - ...。5.2 ResNet残差连接与卷积设计ResNet通过“残差块”解决了深度网络中的梯度消失/爆炸问题。在一个基本的残差块中卷积层扮演核心角色。一个残差块包含两条路径恒等路径如果输入和输出维度相同则直接将输入x加到输出上。残差路径通常由两个或三个3x3卷积层堆叠而成学习输入x的残差F(x)。最终输出是H(x) F(x) x。这种设计让网络可以轻松地学习恒等映射当F(x)0时确保了即使网络极深性能也不会退化。在ResNet中下采样尺寸减半、通道数翻倍通常通过第一个卷积层使用步长为2来实现同时恒等路径上使用一个1x1卷积步长为2来匹配尺寸和通道数。5.3 现代趋势池化层被替代卷积承担更多在最新的网络架构如EfficientNet, RegNet中一个明显的趋势是最大池化层使用得越来越少。下采样的任务更多地交给了步长为2的卷积层或深度可分离卷积层。为什么因为带步长的卷积是一个“有参数”的下采样。它在降低空间维度的同时还在进行特征提取和学习。而池化层是一个“无参数”的、确定性的下采样操作它只是选择性地丢弃信息不具备学习能力。让可学习的卷积来负责下采样理论上可以让网络更智能地决定如何压缩信息可能获得更好的性能。因此在现代架构中你可能会看到这样的模式[Conv (s1)] - [Conv (s1)] - [Conv (s2)]来替代传统的[Conv] - [Conv] - [Pool]。当然全局平均池化在网络的末端仍然不可或缺。6. 实战避坑指南与高级技巧理论很美好但实践中有很多细节决定成败。以下是我在多年实践中总结的一些关键点。6.1 卷积核初始化好的开始是成功的一半卷积层的权重不能初始化为零或完全相同的值这会导致所有神经元学习到相同的特征。常用的初始化方法有Kaiming初始化这是配合ReLU激活函数的默认推荐。它根据卷积核的输入通道数和空间尺寸来调整初始权重的方差使得在前向传播和反向传播时信号的方差能够大致保持稳定有效缓解梯度消失和爆炸问题。在PyTorch中默认的卷积层初始化就是Kaiming均匀初始化。Xavier初始化更适用于Tanh、Sigmoid等饱和型激活函数。实操建议对于使用ReLU及其变体的网络无需手动初始化框架默认的Kaiming初始化通常就是最佳选择。除非你有特殊需求否则不要随意更改。6.2 填充策略的选择samevsvalidsame填充目标是使输出特征图的空间尺寸与输入相同当步长为1时。在PyTorch中对于kernel_size3设置padding1对于kernel_size5设置padding2。这是构建深度网络时保持特征图尺寸稳定的常用方法。valid填充即不进行任何填充。这会导致输出尺寸略小于输入。在网络的某些层使用可以有效降低计算量但需要仔细规划整个网络的特征图尺寸流。注意事项当卷积核尺寸为偶数时如2x2,4x4无法通过对称填充来实现完美的same卷积因为填充数必须是整数且左右/上下填充相等。因此主流网络设计几乎全部使用奇数的卷积核尺寸1x1,3x3,5x5,7x7其中3x3因其在感受野和参数效率上的最佳平衡而成为绝对主流。6.3 1x1卷积的妙用网络中的“多面手”务必重视1x1卷积它在现代网络中无处不在瓶颈层在3x3卷积之前先用1x1卷积将通道数减少例如减少到原来的1/4进行3x3卷积后再用1x1卷积恢复通道数。这能极大减少3x3卷积的计算量。ResNet的Bottleneck模块就是典型例子。通道间的交互与整合它可以灵活地融合所有通道的信息学习通道间的非线性组合。替代全连接层在卷积网络的最后使用全局平均池化得到一个特征向量有时会再接一个1x1卷积等价于全连接层来调整维度再送入分类头。6.4 池化层的超参数陷阱池化窗口过大4x4或更大的池化窗口会带来过于激进的下采样可能导致重要空间信息丢失过快尤其是在网络浅层。2x2配合步长2是最稳健、最通用的选择。重叠池化使用步长小于窗口大小的池化如3x3窗口步长2。这能稍微缓解信息丢失但会增加计算量且收益并不总是明显现在已较少使用。全局池化的位置全局平均池化应放在所有空间特征提取完成之后通常是在一系列卷积层的末尾将[B, C, H, W]的特征图变为[B, C, 1, 1]再展平为[B, C]送入分类器。6.5 结合批归一化稳定训练的“定海神针”在现代CNN中卷积层之后、激活函数之前几乎都会插入一个批归一化层。 它的作用是对每一个批次的数据在每一个通道上分别进行归一化减去均值除以标准差将其调整为均值为0、方差为1的分布。带来的好处是革命性的允许使用更高的学习率加速训练收敛。减少对权重初始化的依赖。起到一定的正则化效果可以轻微减少对Dropout的依赖。 因此一个现代卷积块的标准顺序是Conv - BN - ReLU - Pool。7. 常见问题排查与性能调优即使理解了所有原理在实战中你仍会遇到各种问题。下面是一些典型场景和解决思路。7.1 模型不收敛或损失震荡检查点1学习率这是最常见的原因。学习率太大可能导致损失爆炸或震荡太小则收敛缓慢甚至停滞。使用学习率预热、余弦退火等调度策略是很好的实践。检查点2权重初始化确认是否使用了合适的初始化方法如Kaiming初始化。糟糕的初始化可能导致梯度问题。检查点3批归一化确保在训练和评估模式下正确使用BN层。训练时BN使用当前批次的统计量评估时BN使用训练过程中累积的移动平均统计量。混淆两者会导致性能异常。检查点4梯度裁剪对于非常深的网络或RNN梯度爆炸时可以考虑梯度裁剪将梯度范数限制在一个阈值内。7.2 模型过拟合策略1数据增强对于图像任务这是最强有力的正则化手段。随机裁剪、水平翻转、颜色抖动、CutMix、MixUp等都能显著提升模型泛化能力。策略2Dropout在全连接层中仍然有效。但在卷积层后使用SpatialDropout随机丢弃整个特征通道有时比普通Dropout效果更好。策略3权重衰减在优化器中加入L2正则化权重衰减惩罚大的权重值。策略4更简单的模型减少网络层数或通道数。有时一个更小、更简单的模型在有限数据上表现更好。7.3 模型欠拟合诊断训练集和验证集上的损失/准确率都很高但不再下降或者都很低。解决方案增加模型容量添加更多卷积层或增加每层的通道数。减少正则化降低权重衰减系数减少或去掉Dropout。训练更久可能只是训练轮数不够。检查数据数据标签是否正确数据预处理如归一化是否合理7.4 推理速度慢瓶颈分析使用 profiling 工具如PyTorch Profiler, TensorBoard找出最耗时的层。通常是某些大的全连接层或深层卷积。优化手段替换为深度可分离卷积将标准卷积替换为深度可分离卷积能大幅减少计算量和参数。使用1x1卷积降维在计算量大的卷积层前用1x1卷积减少通道数。网络剪枝与量化训练后可以剪枝掉不重要的连接将权重置零或将FP32精度量化到INT8甚至更低精度在专用硬件上能获得显著的加速。架构搜索考虑使用MobileNet, ShuffleNet, EfficientNet-Lite等为移动端和边缘设备设计的轻量级架构。7.5 特征图尺寸计算错误这是新手常犯的错误会导致网络前向传播时张量尺寸不匹配而报错。黄金法则在定义网络时手动推算或打印每一层之后的特征图尺寸。可以写一个简单的forward函数打印shape或者使用torchsummary库来一键查看。牢记公式时刻记住输出尺寸公式(W - F 2P) / S 1。对于转置卷积上采样公式则不同需要额外注意。使用自适应池化当输入尺寸不确定时例如全卷积网络用于不同尺寸的输入在网络的最后使用nn.AdaptiveAvgPool2d((H, W))可以将任意尺寸的输入调整到固定的(H, W)尺寸再送入分类层非常灵活。卷积和池化作为卷积神经网络的基石其思想之简洁与强大历经多年仍是深度学习的核心。从最初LeNet-5中的简单应用到如今Transformer中与自注意力机制的融合其生命力在于它完美地捕捉了视觉数据的局部相关性和平移不变性先验。掌握它们不仅仅是记住公式和API更是理解这种“归纳偏置”如何让模型更高效地学习。在动手搭建下一个CNN项目时不妨多思考一下我这里的卷积核究竟想检测什么池化层是否必要能否用带步长的卷积替代这些设计选择背后的权衡正是深度学习工程师从入门走向精通的必经之路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价