我已经把VGG训练成一个10类的分类器,在100个历元上,这就是训练/验证的准确性。
另外,我想在一个延迟测试集上测试模型,所以我这样评估它:
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个类。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐