首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据集过拟合的可能原因

数据集过拟合的可能原因
EN

Stack Overflow用户
提问于 2017-03-29 02:17:46
回答 1查看 524关注 0票数 0

我使用的数据集包含33k个图像。训练集包含27k,验证集包含6k个图像。

我在模型中使用了以下CNN代码:

代码语言:javascript
复制
model = Sequential()

model.add(Convolution2D(32, 3, 3, activation='relu', border_mode="same", input_shape=(row, col, ch)))
model.add(Convolution2D(32, 3, 3, activation='relu', border_mode="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(64, 3, 3, activation='relu', border_mode="same"))
model.add(Convolution2D(128, 3, 3, activation='relu', border_mode="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Activation('relu'))
model.add(Dense(1024))
model.add(Dropout(0.5))
model.add(Activation('relu'))
model.add(Dense(1))
adam = Adam(lr=0.0001)
model.compile(optimizer=adam, loss="mse", metrics=["mae"])

我得到的输出有一个decreasing training loss,但increasing validation loss建议使用overfitting。但是我已经包括了dropouts,它应该在preventing overfitting中有所帮助,当训练了10个时期时,.Following是输出的快照:

代码语言:javascript
复制
Epoch 1/10
27008/27040 [============================>.] - ETA: 5s - loss: 0.0629 - mean_absolute_error: 0.1428 Epoch 00000: val_loss improved from inf to 0.07595, saving model to dataset/-00-val_loss_with_mymodel-0.08.hdf5
27040/27040 [==============================] - 4666s - loss: 0.0629 - mean_absolute_error: 0.1428 - val_loss: 0.0759 - val_mean_absolute_error: 0.1925
Epoch 2/10
27008/27040 [============================>.] - ETA: 5s - loss: 0.0495 - mean_absolute_error: 0.1287 Epoch 00001: val_loss did not improve
27040/27040 [==============================] - 4605s - loss: 0.0494 - mean_absolute_error: 0.1287 - val_loss: 0.0946 - val_mean_absolute_error: 0.2289
Epoch 3/10
27008/27040 [============================>.] - ETA: 5s - loss: 0.0382 - mean_absolute_error: 0.1119 Epoch 00002: val_loss did not improve
27040/27040 [==============================] - 4610s - loss: 0.0382 - mean_absolute_error: 0.1119 - val_loss: 0.1081 - val_mean_absolute_error: 0.2463

So, what is wrong? Are there any other methods to prevent overfitting?

Does shuffling of data help?

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 02:21:13

我会尝试添加1E-4的重量衰减。这可以通过像这样添加权重衰减层来完成:model.add(Convolution2D(32, 3, 3, activation='relu', border_mode="same", input_shape=(row, col, ch), W_regularizer=l2(1E-4), b_regularizer=l2(1E-4)))。L2可以在keras.regularizers (https://keras.io/regularizers/#example)中找到。权重正则化非常擅长对抗过拟合。

然而,过度拟合可能不仅是你的模型的结果,也是你的模型的结果。如果验证数据比你的训练数据更“难”,那么可能就是你不能很好地拟合它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43077047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档