卷积神经网络(CNN)原理(二)

简介: 卷积神经网络(CNN)原理(二)

3.2.4 stride-步长



以上例子中我们看到的都是每次移动一个像素步长的结果,如果将这个步长修改为2,3,那结果如何?


image.png


这样如果以原来的计算公式,那么结果


N + 2P - F + 1 = 6 + 0 -3 +1 = 4N+2P−F+1=6+0−3+1=4


但是移动2个像素才得出一个结果,所以公式变为


\frac{N + 2P - F}{2} + 1 = 1.5 + 1 = 2.52N+2P−F+1=1.5+1=2.5,如果相除不是整数的时候,向下取整,为2。这里并没有加上零填充。


所以最终的公式就为:


对于输入图片大小为N,过滤器大小为F,步长为S,零填充为P,


(\frac{N + 2P - F}{S} + 1),(\frac{N + 2P - F}{S} + 1)(SN+2P−F+1),(SN+2P−F+1)


3.2.5 多通道卷积



当输入有多个通道(channel)时(例如图片可以有 RGB 三个通道),卷积核需要拥有相同的channel数,每个卷积核 channel 与输入层的对应 channel 进行卷积,将每个 channel 的卷积结果按位相加得到最终的 Feature Map。


image.png


3.2.5.1 多卷积核


当有多个卷积核时,可以学习到多种不同的特征,对应产生包含多个 channel 的 Feature Map, 例如上图有两个 filter,所以 output 有两个 channel。这里的多少个卷积核也可理解为多少个神经元。


image.png


相当于我们把多个功能的卷积核的计算结果放在一起,比如水平边缘检测和垂直边缘检测器。


3.2.6 卷积总结



我们来通过一个例子看一下结算结果,以及参数的计算


  • 假设我们有10 个Filter,每个Filter3 X 3 X 3(计算RGB图片),并且只有一层卷积,那么参数有多少?


计算:每个Filter参数个数为:3 3 3 + 1 bias = 28个权重参数,总共28 * 10 = 280个参数,即使图片任意大小,我们这层的参数也就这么多。


  • 假设一张200 200 3的图片,进行刚才的FIlter,步长为1,最终为了保证最后输出的大小为200 * 200,需要设置多大的零填充


(\frac{N + 2P - F}{s} + 1) = N(sN+2P−F+1)=N


P = \frac{(N -1) * s + F - N}{2} = \frac{199 + 3 - 200}{2} = 1P=2(N−1)∗s+F−N=2199+3−200=1


3.2.6.1 设计单个卷积Filter的计算公式


假设神经网络某层ll的输入:


  • inputs: n_{h}^{[l -1]},n_{w}^{[l -1]},n_{c}^{[l -1]}nh[l−1],nw[l−1],nc[l−1]


卷积层参数设置:


  • f^{[l]}f[l]:filter的大小
  • p^{[l]}p[l]:padding的大小
  • s^{[l]}s[l]:stride大小
  • n_{c}^{[l]}nc[l]:filter的总数量


  • outputs:n_{h}^{[l]},n_{w}^{[l]},n_{c}^{[l]}nh[l],nw[l],nc[l]


所以通用的表示每一层:


  • 每个Filter:f^{[l]} * f^{[l]} * n_{c}^{[l -1]}f[l]∗f[l]∗nc[l−1]
  • 权重Weights:f^{[l]} * f^{[l]} * n_{c}^{[l -1]} * n_{c}^{[l]}f[l]∗f[l]∗nc[l−1]∗nc[l]
  • 应用激活函数Activations:a^{[l]} = n_{h}^{[l]},n_{w}^{[l]},n_{c}^{[l]}a[l]=nh[l],nw[l],nc[l]
  • 偏差bias:1 * 1 * 1 * n_{c}^{[l]}1∗1∗1∗nc[l],通常会用4维度来表示


之前的式子我们就可以简化成,假设多个样本编程向量的形式


Z^{[l]} = W^{[l]} * X^{[l-1]} + b^{[l]}Z[l]=W[l]∗X[l−1]+b[l]


A^{[l]} = g(Z^{[l]})A[l]=g(Z[l])


3.2.7 池化层(Pooling)



池化层主要对卷积层学习到的特征图进行亚采样(subsampling)处理,主要由两种


  • 最大池化:Max Pooling,取窗口内的最大值作为输出
  • 平均池化:Avg Pooling,取窗口内的所有值的均值作为输出


意义在于:


  • 降低了后续网络层的输入维度,缩减模型大小,提高计算速度
  • 提高了Feature Map 的鲁棒性,防止过拟合


image.png


对于一个输入的图片,我们使用一个区域大小为2 2,步长为2的参数进行求最大值操作。同样池化也有一组参数,f, sf,s,得到2 2的大小。当然如果我们调整这个超参数,比如说3 * 3,那么结果就不一样了,通常选择默认都是f = 2 * 2, s = 2f=2∗2,s=2


池化超参数特点:不需要进行学习,不像卷积通过梯度下降进行更新。


如果是平均池化则:


image.png


3.2.8 全连接层



卷积层+激活层+池化层可以看成是CNN的特征学习/特征提取层,而学习到的特征(Feature Map)最终应用于模型任务(分类、回归):


  • 先对所有 Feature Map 进行扁平化(flatten, 即 reshape 成 1 x N 向量)
  • 再接一个或多个全连接层,进行模型学习


image.png


3.2.9 总结



掌握卷积神经网路的组成


  • 掌握卷积的计算过程
  • 卷积过滤器个数
  • 卷积过滤器大小
  • 卷积过滤器步数
  • 卷积过滤器零填充


掌握池化的计算过程原理


目录
相关文章
|
1天前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络的步态识别matlab仿真,数据库采用CASIA库
**核心程序**: 完整版代码附中文注释,确保清晰理解。 **理论概述**: 利用CNN从视频中学习步态时空特征。 **系统框架**: 1. 数据预处理 2. CNN特征提取 3. 构建CNN模型 4. 训练与优化 5. 识别测试 **CNN原理**: 卷积、池化、激活功能强大特征学习。 **CASIA数据库**: 高质量数据集促进模型鲁棒性。 **结论**: CNN驱动的步态识别展现高精度,潜力巨大,适用于监控和安全领域。
|
17天前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
60 19
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于CNN卷积神经网络的MQAM调制识别matlab仿真
**理论**: 利用CNN自动识别MQAM调制信号,通过学习星座图特征区分16QAM, 64QAM等。CNN从原始数据提取高级特征,优于传统方法。 - **CNN结构**: 自动特征学习机制,适配多种MQAM类型。 - **优化**: 损失函数指导网络参数调整,提升识别准确度。 - **流程**: 大量样本训练+独立测试评估,确保模型泛化能力。 - **展望**: CNN强化无线通信信号处理,未来应用前景广阔。
|
13天前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
2天前
|
存储 安全 网络安全
云计算与网络安全:技术演进与挑战
在数字化时代的浪潮中,云计算以其高效、灵活和成本效益显著的优势成为企业数字化转型的核心驱动力。然而,随着云服务的广泛应用,网络安全问题也愈发凸显,成为制约云计算发展的关键因素。本文从云计算服务的基本概念出发,深入探讨了网络安全的重要性,并详细分析了云环境下的信息安全威胁。通过对比传统网络环境和云计算环境的安全挑战,本文揭示了云计算特有的安全风险,并提出了相应的防护策略。最后,本文展望了云计算与网络安全的未来发展趋势,旨在为相关领域的专业人士提供参考和启示。
16 0
|
1天前
|
网络虚拟化 数据中心 虚拟化
|
6天前
|
运维 负载均衡 监控
|
11天前
|
网络协议 网络虚拟化 数据中心
|
2天前
|
存储 弹性计算 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的深度探讨
【7月更文挑战第24天】本文旨在深入探讨云计算与网络安全之间的关系,包括云服务、网络安全、信息安全等技术领域。我们将从云计算的基本概念出发,分析其对网络安全的影响,以及如何通过技术手段保障云计算环境下的网络安全。同时,我们还将探讨网络安全在云计算环境下的重要性,以及如何通过信息安全技术保护用户数据和隐私。最后,我们将展望云计算与网络安全领域的未来发展趋势,为读者提供一些启示和建议。

热门文章

最新文章