CNN卷积神经网络(二)网络架构常见形式和参数设置

本文参考了 这篇教程

(一)网络架构

CNN的网络架构中最常见的形式就是堆叠好几个[CONV-RELU]层再跟上一个POOL层,重复几次,直到输入图像已经被转换为空间尺寸很小的输出 。即:

在这里插入图片描述
∗ * 表示重复
POOL?表示可能池化也可能不池化
0 ≤ N ≤ 3 0\leq N\leq3 0N3
0 ≤ K &lt; 3 0\leq K&lt;3 0K<3
0 ≤ M 0\leq M 0M

比如下面这几种网络形式:

在这里插入图片描述

几个Tips:

  1. 多个[CONV-RELU]层堆叠起来再POOL有利于大型的深度网络。

因为多个卷积和RELU非线性可以在灾难性池化之前尽量更多的提取输入中的信息,发现更复杂的特征。之所以用destructive 形容pooling是因为,常用的 2 ∗ 2 2*2 22步长为2的池化会直接删掉75%的数据实现降维和减参,虽然有利于实际需要,但太暴力,直接失去卷积层提取出来的有关输入的大量信息。

  1. Prefer a stack of small filter CONV to one large receptive field CONV layer.堆叠几个小卷积核胜过一个大卷积核。

假设堆叠3个 3 ∗ 3 3*3 33的卷积核,卷积核之间当然是要引入非线性的(通过RELU)。

那么第一个卷积核可以看到输入体的 3 ∗ 3 3*3 33的空间范围,而第二个卷积核可以看到第一个卷积核的输出体的 3 ∗ 3 3*3 33范围,因此相当于能看到输入体的 5 ∗ 5 5*5 55范围,同理第三个卷积核可以看到输入体的 7 ∗ 7 7*7 77的范围。相比于直接只用一个接收域为 7 ∗ 7 7*7 77的卷积核,一样都是看到输入体的 7 ∗ 7 7*7 77空间范围,但前者有2个优点:

一是表达能力更强,一个大卷积核只有一次非线性操作,表达能力不如三个小卷积核堆叠的方案,后者多次引入非线性使得表达能力更强more expressive。
二是需要的参数更少,假设所有的volume都有C个channel(?),则一个 7 ∗ 7 7*7 77卷积核需要的参数的个数是 7 ∗ 7 ∗ C ∗ C = 49 C 2 7*7*C*C=49C^2 77CC=49C2,三个堆叠的 3 ∗ ∗ 3 3**3 33卷积核总共需要的参数个数是 3 ∗ C ∗ ( 3 ∗ 3 ∗ C ) = 27 C 2 3*C*(3*3*C)=27C^2 3C(33C)=27C2(由于没懂channel在这里代表什么,我没搞懂这个怎么算的···),所以需要的参数更少。


(二)每层参数设置(通用经验)

1.输入层

  • 图像尺寸能被2整除很多次。如32,64,96,224,384,512。
    一个原因是因为池化滤波器尺寸是2*2且步长为2。

2.卷积层

  • 用小尺寸的滤波器,如 3 ∗ 3 3*3 33,最多用 5 ∗ 5 5*5 55,当然也有在第一个卷积层用 7 ∗ 7 7*7 77的,那是为了减少参数和对硬件存储量的要求,用的很少。
5 ∗ 5 5*5 55 7 ∗ 7 7*7 77的很少,最多只会在look at the input image 的第一个卷积层用!
  • 步长S=1。
  • 卷积前要给输入体补0,保证卷积后空间大小不变。
3 ∗ 3 3*3 33则P=1,在边界一周补1个0,可保证卷积后空间大小不变;
5 ∗ 5 5*5 55则P=2,在边界一周补2个0,可保证卷积后空间大小不变;
其他尺寸, F ∗ F F*F FF,则 P = ( F − 1 ) / 2 P=(F-1)/2 P=(F1)/2,可保证卷积后空间大小不变;

3.池化层

最常用的就是 2 ∗ 2 2*2 22的步长为2 的最大池化max-pooling
没有其他,只用这个就行。

其他什么 3 ∗ 3 3*3 33的步长2的花哨的对性能也没什么用

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PSO(Particle Swarm Optimization)是一种基于群体智能的优化算法,它可以用于优化卷神经网络(Convolutional Neural Network,简称CNN)。在MATLAB中,我们可以利用PSO算法对CNN进行优化。 首先,我们需要定义CNN架构。卷神经网络由多个卷层、池化层、全连接层和输出层组成。我们可以使用MATLAB的深度学习工具箱来构建CNN的模型。 接下来,我们将CNN参数作为优化的自变量。例如,卷层的卷核大小、池化层的池化大小、全连接层的隐藏单元数量等等都可以作为优化的变量。 然后,我们将PSO算法应用于CNN参数优化。首先,我们需要定义适应度函数,即衡量CNN性能的指标,如分类精度、损失函数等。然后,我们将PSO算法中的粒子看作是CNN参数空间中的一个解,并使用适应度函数来评估每个粒子的适应度。最终,PSO算法会找到一个最优解,即CNN参数的最佳组合。 在MATLAB中,我们可以使用已有的PSO算法库来实现PSO优化卷神经网络。该库提供了一些用于定义适应度函数、设置优化参数等的函数。我们只需将CNN参数空间定义为优化空间,设置适应度函数,然后调用PSO算法库来实现优化。 综上所述,通过PSO算法优化卷神经网络,我们可以得到更好的性能和更佳的参数组合。在MATLAB中,我们可以使用深度学习工具箱和PSO算法库来实现这一过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值