我意识到以下问题可能会按照“关于实验和使用经验”的原则获得回应,但无论如何我都会提出疑问,因为我认为了解我应该寻找的内容将很有用开始。
在Keras的Conv2D
卷积层中,有一个名为filters
的参数,我将其理解为“在{{1} }参数”。即kernel_size
表示将扫描32张3x3大小的窗口。
我的问题是:如果您要创建一个全新的神经网络来解决图像分类/识别问题而又不利用预先训练的神经网络(因此从头开始),那么Conv2D(filters=32, kernel_size=(3,3)..)
的价值是什么您通常从第一个卷积层开始吗?有经验法则吗?这只是字面上的实验答案吗?
比方说,我希望一种全新的模型能够在不利用filters
或ResNet50
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
层是解决新问题的合适方法吗?
完全理解这是一个固有的复杂主题,没有“快速致富”的方法,但我只是想更好地理解这个主题。
答案 0 :(得分:0)
16或32很好。
前几层中的过滤器通常不太抽象,并且通常模拟边缘检测器,斑点检测器等。您通常不希望将太多过滤器应用于输入层,因为从原始输入中只能提取太多信息层。如果添加太多,大多数过滤器将是多余的。您可以通过修剪(减少过滤器数量,直到性能指标下降)进行检查
内核大小决定了要影响卷积输出(内核的“接收场”)的图像数量。可以看出,较小的内核通常比较大的内核更好(即使用3x3而不是5x5、7x7)。
Inception体系结构将这些决策权从建模者手中解脱出来,因为它将不同内核大小的过滤器集中在一起,并让模型学习了最佳使用方法。
作为参考,我建议您通过youtube上的斯坦福大学CS231n课程来全面了解:https://www.youtube.com/playlist?list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk