gpt4 book ai didi

validation - 训练准确性提高但验证准确性保持不变

转载 作者:行者123 更新时间:2023-12-04 02:57:59 25 4
gpt4 key购买 nike

我正在使用 CNN 训练服装分类算法。我有大约 60000 张图像用于 10 个类别的训练(按 80:20 进行训练和验证)。分离 10000 张图像进行测试。

训练准确度会随着时间的推移而提高,但验证准确度会保持不变。训练损失也减少但验证损失保持不变。 Plot of accuracy

Plot of loss

img_width, img_height = 28, 28
batch_size = 32
samples_per_epoch = 20000
validation_steps = 300
nb_filters1 = 32
nb_filters2 = 64
nb_filters3 = 128
conv1_size = 3
conv2_size = 2
pool_size = 2
classes_num = 10
epochs = 300

#learning_rate = 0.001
learning_rate = 0.01
decay_rate = learning_rate / epochs
momentum = 0.8
sgd = SGD(lr=learning_rate, momentum=momentum, decay=decay_rate,
nesterov=True)

model = Sequential()
model.add(
Convolution2D(nb_filters1, conv1_size, conv1_size, border_mode="same",
input_shape=(img_width, img_height, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))

model.add(Convolution2D(nb_filters2, conv2_size, conv2_size,
border_mode="same"))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(pool_size, pool_size), dim_ordering='th'))

model.add(Flatten())
model.add(Dense(256))
model.add(Activation("relu"))
model.add(Dropout(0.5))
model.add(Dense(classes_num, activation='softmax'))

model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy'])

train_datagen = ImageDataGenerator(
rescale=1. / 255,
horizontal_flip=True
)

达到的训练准确率:约 96%达到的验证准确率:约 92%达到的测试准确度:约 87%

我的问题:我可以做些什么来提高验证准确性或最小化验证损失?可以做哪些改变来改善它?

最佳答案

你体验到的东西叫做Overfitting .您可以添加更多正则化。最简单的方法是添加另一个 Dropout 层。

from keras.layers import Dropout
***

model = Sequential()
model.add(
Convolution2D(nb_filters1, conv1_size, conv1_size, border_mode="same",
input_shape=(img_width, img_height, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))
model.add(Dropout(0.3) # <- THIS IS ADDED
model.add(Flatten())
***

0.3 是将乘以 0 的神经元数量,因此它们的值将不包含在后续计算中。您可以尝试添加其他 Dropout 层并更改它们的值。您还可以为图层添加一些偏差,这在此处进行了解释 https://keras.io/regularizers/ .

关于validation - 训练准确性提高但验证准确性保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999181/

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