我应该为Keras使用什么层?

Ale*_*xis 3 machine-learning computer-vision deep-learning keras keras-layer

我正在Keras建立一个样本项目。该项目旨在识别猫和狗之间的差异。我在网上找到了一个带有这种模型的示例

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
Run Code Online (Sandbox Code Playgroud)

我的问题是,人们如何知道要使用哪个图层?何时使用Conv2Dvs相Conv1D对于另一层是否有准则或经验法则?

lej*_*lot 5

简而言之-他们没有。当前的大多数深度学习研究都提出了好的架构。有一些经验法则,直觉,但主要是-经验或应对据报道可行的现有经验。

简而言之:

  • 当您在数据中具有空间和/或时间结构时,例如图像,视频,声音等,将使用卷积。
  • 池化具有与卷积类似的用例,它仍然需要空间和/或时间结构(除非将其应用于整个通道/维度),并提供一种消除“细节”(通常为噪声)并减小信号尺寸的方法
  • 当数据具有顺序字符时重复出现
  • 需要完全连接才能“强制”给定的维度(因此通常用作最后一层),或者在一个人真的不知道可以利用的任何结构时(因为它们几乎是最通用的)

然而,如何组成,使用什么超参数,使用多少个参数是一个巨大的开放研究问题,而最佳方法是从一开始就复制别人的体系结构并获得一些经验/直觉,哪些是行得通的,哪些行不通的您正在使用的数据。