【问题标题】:Train and validation score is high but very Poor Test Accuracy训练和验证分数很高,但测试准确性很差
【发布时间】:2019-07-09 06:59:23
【问题描述】:

我正在研究多标签图像分类,我使用初始网络作为我的基础架构。 在我得到完整的训练之后,训练准确率 > 90% 和验证准确率 > 85%,但我在测试数据上获得了 17% 的准确率。

模型训练 -->

model = Model(pre_trained_model.input, x)
model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(lr=0.0001),#'adam'
              metrics=['acc'])
    history = model.fit_generator(
      train_generator,
      steps_per_epoch=600,#total data/batch size
      epochs=100,
      validation_data=validation_generator,
      validation_steps=20,
      verbose=1,callbacks = callbacks)

在训练好的模型上进行测试:

test_generator = test_datagen.flow_from_directory(
    test_dir,target_size=(128, 128),batch_size=1,class_mode='categorical')

filenames = test_generator.filenames
nb_samples = len(filenames)

prediction = test_model.predict_generator(test_generator,steps=nb_samples,verbose=1)

将结果保存到 Pandas

predicted_class_indices = np.argmax(prediction,axis=1)
labels = (train_generator.class_indices) #geting names of classes from folder structure
labels = dict((v,k) for k,v in labels.items())
predictions = [k for k in predicted_class_indices]

results=pd.DataFrame({"image_name":filenames,
                      "label":predictions})
results['image_name'] = [each.split("\\")[-1] for each in results['image_name']]

一切看起来都很好,但我的预测仍然很差。 孩子们帮我弄清楚我在哪里犯了错误。

【问题讨论】:

    标签: python tensorflow keras deep-learning multilabel-classification


    【解决方案1】:

    您的数据集中的图像的排列方式可能会导致模型以前看不到测试图像,因此准确度会显着下降。

    我建议您尝试使用K-fold cross validation 甚至Stratified K-fold cross validation。这里的好处是您的数据集将被拆分,比如说 10 个“批次”。每次迭代(共 10 次),一个批次将是测试批次,所有其他批次将是训练批次。下一次迭代,上一步的测试批次成为训练批次,其他批次成为测试批次。重要的是要指出每个批次将只是一次测试批次。 Stratified K-fold 的另一个好处是它会考虑类标签并尝试以这样的方式拆分类,以使每个批次具有大致相同的类分布。

    另一种获得更好结果的方法是打乱图像,然后选择训练图像和测试图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-20
      • 2021-11-12
      • 2020-10-16
      • 1970-01-01
      • 2020-03-31
      • 2020-07-08
      • 2019-01-30
      • 2017-06-22
      相关资源
      最近更新 更多