model.U发电机以及发电机型号返回完全不同的精度

2024-03-29 05:53:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经把VGG训练成一个10类的分类器,在100个历元上,这就是训练/验证的准确性。 train/validation accuracy

另外,我想在一个延迟测试集上测试模型,所以我这样评估它:

test_datagen = ImageDataGenerator(
    rescale=1./255,
)

test_generator = test_datagen.flow_from_directory(
        '/content/drive/My Drive/Colab Notebooks/domat/solo-dataset/test/',
        target_size=(224, 224),
        batch_size=32,
        class_mode='categorical',
        shuffle=False
)

steps = 3616 // 32 

loss, accuracy = model_vgg_imagenet_dropout.evaluate_generator(test_generator,
                                             steps = steps,
                                             workers = 4,
                                             use_multiprocessing=True)

当我打印结果时,得到的结果(1.4021655139801776,0.802820796460177),与我预期的结果相似。
但是,当我试图通过model.U发电机,我只得到13%的准确率。
下面是手动计算它的代码(生成器是同一个对象):

predictions = model_vgg_imagenet_dropout.predict_generator(test_generator,
                                             steps = steps,
                                             workers = 4,
                                             use_multiprocessing=True)

y_pred = np.zeros(len(predictions))

for i, p in enumerate(predictions):
  max_index = np.argmax(p)
  y_pred[i] = max_index

# the y_pred array should contain the class index of each sample, as defined by test_generator.class_indices

y_true = test_generator.classes
from sklearn.metrics import accuracy_score
print(accuracy_score(y_true, y_pred))

我不明白我在哪里犯了错,对我来说似乎是正确的。你知道吗

编辑:当我手动观察model.U发电机()并将softmax值映射到类索引,它通常会输出3或4个类。你知道吗


Tags: fromtestsizeindexmodelstepsgeneratorclass