首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >准确率较低,即预测准确率为52%,而训练期间的训练和验证准确率约为92%

准确率较低,即预测准确率为52%,而训练期间的训练和验证准确率约为92%
EN

Stack Overflow用户
提问于 2021-08-02 07:29:28
回答 2查看 73关注 0票数 0

我正在使用预先训练好的VGG19来训练模型。在训练时,我得到了92%左右的良好准确率(包括训练和验证)。

代码语言:javascript
复制
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%。

有人能告诉我我哪里做错了吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-04 11:59:14

此问题的解决方案是:

代码语言:javascript
复制
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=Trueflow_from_directory中添加shuffle=False,这就是我在预测时准确率较低的原因。

我希望它能帮助任何犯同样错误的人!

票数 0
EN

Stack Overflow用户

发布于 2021-08-02 09:31:40

看来你的算法缺乏泛化能力。其中一个原因可能是用于训练的数据集的大小。数据集越大,泛化效果越好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68617894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档