我应该为Keras使用哪些层?

时间:2017-03-19 21:35:54

标签: machine-learning computer-vision deep-learning keras keras-layer

我正在Keras建立一个示例项目。该项目旨在确定猫与狗之间的区别。我在网上找到了example这样的模型:

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)))

我的问题是,人们如何知道要使用哪些图层?在使用Conv2DConv1D对比另一层时,是否有指南或经验法则?

1 个答案:

答案 0 :(得分:3)

总之 - 他们没有。提出良好的架构是当前深度学习研究的主要内容。有一些拇指,直觉的规则,但主要是 - 经验或应对现有的报告工作。

用非常简短的话说:

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

然而,如何编写,使用什么超参数,使用多少是一个巨大的开放式研究问题的问题,一开始最好的方法是复制别人的架构并获得一些经验/直觉什么可行,什么不适用于您正在使用的数据。