自动确定要在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
体系结构感兴趣,因为它在同一层中组合了多个大小的过滤器。