我正在尝试训练
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:“>”和“ str”的实例之间不支持“>”
我曾经通过更新numpy
或卸载并重新安装来解决此问题,但这一次,它都不起作用。你能帮我吗?
答案 0 :(得分:0)
您已经捕获了调整学习率,辍学,批处理规范化等内容,这是进行调整的良好起点。
您是否尝试过正则化?
退房 https://cambridgespark.com/content/tutorials/neural-networks-tuning-techniques/index.html
如果没有帮助,则可能需要查看输入的结构,并查看是否还有其他方法对网络融合更有帮助。这包括确保训练和验证在数据等方面具有相同水平的差异。但是,这更多地取决于您要解决的问题。