Joe*_*Joe 13 machine-learning convolution neural-network conv-neural-network keras
我刚刚开始我的ML之旅并做了一些教程.有一点不清楚(对我来说)是如何为Keras Conv2D确定'过滤器'参数.
我读过的大多数资源都只是将参数设置为32而没有解释.这只是一个经验法则还是输入图像的尺寸起作用?例如,CIFAR-10中的图像是32x32
特别:
model = Sequential()
filters = 32
model.add(Conv2D(filters, (3, 3), padding='same', input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(filters, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
Run Code Online (Sandbox Code Playgroud)
下一层的过滤器参数为filter*2或64.再次,这是如何计算的?
TX.
乔
Mar*_*jko 21
实际上 - 你的问题没有一个好的答案.大多数架构通常都经过精心设计,并在许多实验中进行了微调.我可以与您分享一些在设计自己的架构时应该应用的拇指规则:
避免第一层中的尺寸折叠.假设您的输入过滤器具有图像的(n, n)空间形状RGB.在这种情况下,最好将过滤器编号设置为大于n * n * 3单个过滤器输入的维度.如果设置较小的数字 - 您可能会遇到这样一个事实,即由于初始化而丢失了信息尺寸,许多有用的图像信息都会丢失.当然 - 这不是一般规则 - 例如对于纹理识别,图像复杂度较低 - 少数过滤器实际上可能有所帮助.
更多地考虑体积而不是过滤器数量 - 在设置过滤器数量时,考虑体积变化而不是连续层之间的过滤器数量的变化是很重要的.例如,VGG即使在汇集图层后滤镜的数量增加一倍 - 实际的要素图卷也减少了2倍,因为汇集了将要素图减少了一倍4.通常将音量减小3以上应被视为不良做法.大多数现代体系结构使用的体积下降因子在1到2之间.仍然 - 这不是一般规则 - 例如,在层次结构较窄的情况下 - 体积下降的较大值实际上可能有所帮助.
避免瓶颈.正如人们可能会在这篇里程碑式的文章中看到的那样,瓶颈可能严重损害您的培训过程 当音量下降太严重时会发生这种情况.当然 - 这仍然可以实现 - 但是你应该使用智能下采样,例如用于Inception v>2
检查1x1卷积 - 相信过滤器激活是高度相关的.可以通过使用1x1卷积来利用它- 即使用1的滤波器大小的卷积.这使得例如通过它们而不是pooling或者智能下采样来降低音量(参见这里的示例).您可以构建两次以上的过滤器,然后通过使用1x1 convs作为连续层来减少25%的过滤器.
你可能会看到.没有简单的方法可以选择过滤器的数量.除了上面的提示,我想与您分享我最喜欢的一个关于过滤器数量的完整性检查.它需要2个简单的步骤:
通常 - 如果过滤器的数量太少(通常) - 这两个测试将向您显示.如果 - 在您的培训过程中 - 通过正规化 - 您的网络严重过度 - 这清楚地表明您的网络有太多的过滤器.
干杯.
| 归档时间: |
|
| 查看次数: |
7991 次 |
| 最近记录: |