gpt4 book ai didi

conv-neural-network - MaxPooling 是否减少过拟合?

转载 作者:行者123 更新时间:2023-12-04 08:03:46 24 4
gpt4 key购买 nike

我用较小的数据集训练了以下 CNN 模型,因此它确实过拟合:

model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), input_shape=(28,28,1), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))

model.add(Conv2D(32, kernel_size=(3,3), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))

model.add(Flatten())
model.add(Dense(512))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
model.compile(loss="categorical_crossentropy", optimizer=Adam(), metrics=['accuracy'])

该模型有很多可训练的参数(超过 300 万个,这就是为什么我想知道我是否应该像下面这样使用额外的 MaxPooling 来减少参数的数量?

Conv - BN - Act - MaxPooling - Conv - BN - Act - MaxPooling - Dropout - Flatten

或者有一个额外的 MaxPooling 和 Dropout,如下所示?

Conv - BN - Act - MaxPooling - Dropout - Conv - BN - Act - MaxPooling - Dropout - Flatten



我试图了解 MaxPooling 的全部意义以及它是否有助于防止过度拟合。

最佳答案

当您的数据集不足以容纳您的特征数量时,可能会发生过度拟合。
最大池化使用最大操作来池化特征集,让您拥有较少数量的特征。
因此,最大池化应该在逻辑上减少过拟合。

Drop-out 通过确保某个特征并不总是可用来减少对任何单个特征的依赖,迫使模型寻找不同的潜在提示,而不是仅仅坚持一个——这很容易让模型过拟合任何明显好的提示。
因此,这也应该有助于减少过拟合。

关于conv-neural-network - MaxPooling 是否减少过拟合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59717290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com