我正在使用预先训练好的VGG19来训练模型。在训练时,我得到了92%左右的良好准确率(包括训练和验证)。
vgg19 = VGG19(input_shape=IMAGE_SIZE, weights='imagenet', include_top=False)
for layer in vgg19.layers:
layer.trainable = False
x = Flatten()(vgg19.output)
prediction = Dense(len(folders), activation='softmax')(x)
model = Model(inputs=vgg19.input, outputs=prediction)
model.compile(loss='categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(
learning_rate=0.0005,
name="Adam"),
metrics=['accuracy']
)
r = model.fit_generator(
training_set,
validation_data=test_set,
epochs=20,
steps_per_epoch=len(training_set),
validation_steps=len(test_set)
)
predictions = model.predict(test_set, steps = test_set.n // 31, verbose=1)
y_pred = []
for i in predictions:
y_pred.append(int(np.argmax(i)))
y_pred = np.asarray(y_pred)训练时的准确性可以从这里查看。

然而,当我预测的时候,我得到的准确率只有52.33%。
有人能告诉我我哪里做错了吗?谢谢!
发布于 2021-08-04 11:59:14
此问题的解决方案是:
test_set = test_datagen.flow_from_directory('/content/drive/MyDrive/dataset/Test',
target_size = (224, 224),
batch_size = 32,
class_mode = 'categorical',
shuffle=False)我没有在默认情况下保留shuffle=True的flow_from_directory中添加shuffle=False,这就是我在预测时准确率较低的原因。
我希望它能帮助任何犯同样错误的人!
发布于 2021-08-02 09:31:40
看来你的算法缺乏泛化能力。其中一个原因可能是用于训练的数据集的大小。数据集越大,泛化效果越好
https://stackoverflow.com/questions/68617894
复制相似问题