选择Conv2D过滤器的值以

时间:2018-09-21 15:56:45

标签: python tensorflow keras conv-neural-network

我意识到以下问题可能会按照“关于实验和使用经验”的原则获得回应,但无论如何我都会提出疑问,因为我认为了解我应该寻找的内容将很有用开始。

在Keras的Conv2D卷积层中,有一个名为filters的参数,我将其理解为“在{{1} }参数”。即kernel_size表示将扫描32张3x3大小的窗口。

我的问题是:如果您要创建一个全新的神经网络来解决图像分类/识别问题而又不利用预先训练的神经网络(因此从头开始),那么Conv2D(filters=32, kernel_size=(3,3)..)的价值是什么您通常从第一个卷积层开始吗?有经验法则吗?这只是字面上的实验答案吗?

比方说,我希望一种全新的模型能够在不利用filtersResNet50 imagenet模型的情况下识别图像中是否有狗,而我将使用彩色图像我将尺寸缩小为InceptionV3为(224,168,3)的4160x3120,我的第一个input_shape层应该是什么样?

例如此示例代码是解决我的问题的一个很好的起点吗?

Conv2D

32是一个好的起点吗?我应该变小吗?将滤镜大小从model = Sequential() model.add(Conv2D(32, kernel_size=(3,3), activation="relu", input_shape=(224,168,3), data_format="channels_last")) model.add(Conv2D(64, kernel_size=(3,3), activation="relu")) #additional model design code 层增加到Conv2D层是解决新问题的合适方法吗?

完全理解这是一个固有的复杂主题,没有“快速致富”的方法,但我只是想更好地理解这个主题。

1 个答案:

答案 0 :(得分:0)

16或32很好。

前几层中的过滤器通常不太抽象,并且通常模拟边缘检测器,斑点检测器等。您通常不希望将太多过滤器应用于输入层,因为从原始输入中只能提取太多信息层。如果添加太多,大多数过滤器将是多余的。您可以通过修剪(减少过滤器数量,直到性能指标下降)进行检查

内核大小决定了要影响卷积输出(内核的“接收场”)的图像数量。可以看出,较小的内核通常比较大的内核更好(即使用3x3而不是5x5、7x7)。

Inception体系结构将这些决策权从建模者手中解脱出来,因​​为它将不同内核大小的过滤器集中在一起,并让模型学习了最佳使用方法。

作为参考,我建议您通过youtube上的斯坦福大学CS231n课程来全面了解:https://www.youtube.com/playlist?list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk