繁体   English   中英

如何提高keras模型的准确性并防止过度拟合

[英]How to increase the accuracy of the keras model and prevent overfitting

我正在尝试训练

model.add(Conv2D(32, (3, 3), kernel_initializer='random_uniform', activation='relu', input_shape=(x1, x2, depth)))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Dropout(0.5))

model.add(BatchNormalization())
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Dropout(0.4))

model.add(Conv2D(64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(BatchNormalization())
model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(3, activation='softmax'))

这是我的编译方式:

sgd = optimizers.SGD(lr=0.1, decay=0.0, momentum=0.05, nesterov=True)
model.compile(loss='categorical_crossentropy',
          optimizer=sgd,
          metrics=['accuracy'])

我尝试了各种学习率和不同的优化器。 但准确度似乎不会超过50%,如下所示: 在此处输入图片说明

我的图像在0左右正确标准化,STD为1。

我有什么想念的吗? 如何提高模型的准确性?

编辑:

嘿,当我使用以下数据生成器时:

train_datagen = ImageDataGenerator(
    featurewise_center=True,
    featurewise_std_normalization=True,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True)
test_datagen = ImageDataGenerator(featurewise_center=True,
    featurewise_std_normalization=True)



train_generator = train_datagen.flow(np.array(X_train), batch_size=batchsize)
valid_generator = test_datagen.flow(np.array(X_test), batch_size = batchsize)

history = model.fit_generator(train_datagen.flow(np.array(X_train), y_train_cat, batch_size=batchsize),
                    steps_per_epoch=len(X_train) // batchsize, epochs=epochs, 
                    validation_data= valid_generator, 
                    validation_steps=len(X_test) // batchsize)

我收到以下错误:

TypeError:“ int”和“ str”的实例之间不支持“>”

我曾经通过更新numpy或将其卸载并再次安装来解决此问题,但是这次,它都不起作用。 你能帮我吗?

您已经捕获了调整学习率,辍学,批处理规范化等内容,这是进行调整的良好起点。

您是否尝试过正则化?

查看https://cambridgespark.com/content/tutorials/neural-networks-tuning-techniques/index.html

如果没有帮助,则可能需要查看输入的结构,并查看是否还有其他方法对网络融合更有帮助。 这包括确保训练和验证在数据等方面具有相同水平的差异。但是,这更多地取决于您要解决的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM