我应该为 Keras 使用哪些层?
What layers should I use for Keras?
我正在 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)))
我的问题是,人们如何知道要使用哪些图层?何时使用 Conv2D
vs Conv1D
vs 另一层是否有指南或经验法则?
简而言之 - 他们没有。想出好的架构是当前深度学习研究的主要内容。有一些经验法则、直觉,但主要是经验或应对据报道有效的现有规则。
简而言之:
- 当您在数据(例如图像、视频、声音等)中具有空间 and/or 时间结构时,使用卷积
- 池化与卷积有相似的用例,它仍然需要空间and/or时间结构(除非它应用于整个channel/dimension)并提供了一种去除"details"(通常是噪声)并降低信号的维度
- 当您的数据具有顺序字符时重复出现
- 需要完全连接到 "force" 给定的维度(因此通常用作最后一层)或者当一个人真的不知道任何可以利用的结构时(因为它们几乎是最通用的) )
然而,如何组合、使用什么超参数、使用多少超参数的问题是一个巨大的开放研究问题,一开始最好的方法是复制别人的架构并获得一些 experience/intuition对于您正在处理的数据,哪些有效,哪些无效。
我正在 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)))
我的问题是,人们如何知道要使用哪些图层?何时使用 Conv2D
vs Conv1D
vs 另一层是否有指南或经验法则?
简而言之 - 他们没有。想出好的架构是当前深度学习研究的主要内容。有一些经验法则、直觉,但主要是经验或应对据报道有效的现有规则。
简而言之:
- 当您在数据(例如图像、视频、声音等)中具有空间 and/or 时间结构时,使用卷积
- 池化与卷积有相似的用例,它仍然需要空间and/or时间结构(除非它应用于整个channel/dimension)并提供了一种去除"details"(通常是噪声)并降低信号的维度
- 当您的数据具有顺序字符时重复出现
- 需要完全连接到 "force" 给定的维度(因此通常用作最后一层)或者当一个人真的不知道任何可以利用的结构时(因为它们几乎是最通用的) )
然而,如何组合、使用什么超参数、使用多少超参数的问题是一个巨大的开放研究问题,一开始最好的方法是复制别人的架构并获得一些 experience/intuition对于您正在处理的数据,哪些有效,哪些无效。