【发布时间】:2018-03-06 18:12:47
【问题描述】:
model.add(Conv2D(32, (5, 5),
padding='same',
data_format='channels_last',
input_shape=input_shape))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
这是我现在的keras模型的样子,完全借鉴here。
我的问题分为两部分,
1.如何自动判断是使用model.add(Conv2D(32, (3, 3)))还是model.add(Conv2D(32, (5,5)))还是model.add(Conv2D(32, (4,4)))?
2. 除了模型的第一行,如果我将 conv2D(64, (3,3)) 模型的其余部分更改为 (5,5),我会得到 `从 3) 中减去 5 获得的负维度。这是为什么?
我看了这两个问题:Selecting number of strides and filters in CNN (Keras) 和 Conv2D layer output shape in keras
根据他们的说法,实验是找出答案的唯一方法,但我想知道是否有一种自动的方法可以做到这一点。
因为有很多参数,例如value of dropout,kernel_size(),然后Dense()的值应该是512/356还是多少是最好的。
PS: 运行具有不同参数的不同模型在计算上变得昂贵,并且比较所有这些结果正在成为另一个痛苦的过程。 我的笔记本电脑有一个 2GB 的 nvidia 显卡,具有 5.0 的计算能力。
【问题讨论】:
-
这可能会有所帮助。 pyimagesearch.com/2018/12/31/…
-
您可能对
Inception Network架构感兴趣,因为它在同一层中结合了多个大小的过滤器。
标签: keras