自动确定要在keras二维层中使用的最佳过滤器大小

自动确定要在keras二维层中使用的最佳过滤器大小,keras,Keras,model.add(Conv2D(32,(5,5), “相同”, 数据\u格式='channels\u last', 输入形状=输入形状) 添加(BatchNormalization()) 添加(激活('relu')) model.add(Conv2D(32,(3,3))) 添加(BatchNormalization()) 添加(激活('relu')) add(MaxPooling2D(池大小=(2,2))) 模型。添加(辍学率(0.25)) add(Conv2D(64,(3,3),paddin

model.add(Conv2D(32,(5,5),
“相同”,
数据\u格式='channels\u last',
输入形状=输入形状)
添加(BatchNormalization())
添加(激活('relu'))
model.add(Conv2D(32,(3,3)))
添加(BatchNormalization())
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
模型。添加(辍学率(0.25))
add(Conv2D(64,(3,3),padding='same'))
添加(BatchNormalization())
添加(激活('relu'))
model.add(Conv2D(64,(3,3)))
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
模型。添加(辍学率(0.25))
model.add(展平())
模型添加(密集(512))
添加(激活('relu'))
模型。添加(辍学率(0.25))
添加模型(密集(num_类))
添加(激活('softmax'))
这就是我当前的keras模型的样子,它完全是从我那里借鉴来的

我的问题分为两部分,
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得到)。为什么呢

我看了这两个问题:和
根据他们的说法,实验是找到答案的唯一方法,但我想知道是否有一种自动的方法可以做到这一点。 因为有很多参数,比如
value of dropout
kernel_size()
,然后
densite()
的值应该是512/356还是多少才是最好的

附言: 使用不同的参数运行不同的模型在计算上越来越昂贵,而比较所有这些结果则成为另一个痛苦的过程。 我的笔记本电脑有一个2GB nvidia图形卡,具有5.0计算能力

  • 内核维度是可以使用多种策略自动优化的超参数

  • 卷积层的输出高度/宽度遵循方程
    size=((输入大小-内核大小)/stride)+1
    。因此,对于太小的图像,您使用了太多的卷积层。在某一点上,
    size
    将为负数,并且您不能有负数形状的输出


  • 非常感谢。那么,我是否应该将conv2d层的其余部分保留为(3,3)?关于“model.add(Dense(512))`在此处选择最佳值”是否有任何规则?如果我更改了model.add(MaxPooling2D(pool_size=(2,2)))到(3,3),它会再次抱怨。我该怎么解决这个问题?谢谢这可能会有帮助。您可能对
    Inception Network
    体系结构感兴趣,因为它在同一层中组合了多个大小的过滤器。