我正在对四类医学图像实施ResNet50模型。我最初有一个数据集,每个班级有250张图像,然后将它们分为2个文件夹train和val,并使用val数据作为测试数据集,并使用train的80%作为训练数据集,并使用20%作为验证数据集。
我尝试了在网上找到的代码。我已经做了很多实验,但是虽然训练精度不错,但是没有什么可以提高验证数据集的准确性,以后可以提高。
请就我的问题状态向我建议提高验证准确性的方法。 PS:尽管图像是黑白的,但我使用的输入形状为(224,224,3),因为我无法翻译为灰度图像找到的代码。希望这不是主要问题。
我所做的唯一更改是更改了数据集的目录,并在代码中也排除了Flatten层,因为avg_pool层也已进行了扁平化,因此可以直接应用Dense层。
last_layer = model.get_layer('avg_pool').output
out = Dense(num_classes, activation='softmax', name='output_layer')(last_layer)
custom_resnet_model = Model(inputs=image_input,outputs= out)
t=time.time()
hist = custom_resnet_model.fit(X_train, y_train, batch_size=32, epochs=12, verbose=1,
validation_data=(X_test, y_test))
print('Training time: %s' % (t - time.time()))
(loss, accuracy) = custom_resnet_model.evaluate(X_test, y_test, batch_size=10, verbose=1)
print("[INFO] loss={:.4f}, accuracy: {:.4f}%".format(loss,accuracy * 100))
答案 0 :(得分:3)
一个很常见的情况。您的模型无法概括数据。您可以尝试执行以下步骤来克服此问题:
如果仍然遇到相同的问题,请绘制混淆矩阵以查看模型遭受最大影响的地方。然后,您可以分析这些特定类的数据。
顺便说一句,对于灰度图像问题,您可以在此处查看:How can I use a pre-trained neural network with grayscale images?