[英]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.