使用keras ImageDataGenerator AttributeError时如何获取分类报告(F1分数):“DirectoryIterator”对象没有属性“argmax”

2024-04-18 14:34:50 发布

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

因为在使用Keras ImageDataGenerator时,我没有将训练集和标签分开,而是依赖于文件夹结构。如何获取分类报告,即如何获取/计算精度、召回率和F1

这是我尝试过的,我得到的错误是抱怨列车发电机没有argmax。我怎样才能解决这个问题

AttributeError: 'DirectoryIterator' object has no attribute 'argmax'

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

train_generator = train_datagen.flow_from_directory(
    train_dir, 
    target_size=(150, 150),  
)

predIdxs = model.predict(train_generator)

predIdxs = np.argmax(predIdxs, axis=1)

print(classification_report(train_generator.argmax(axis=1), predIdxs,
                            target_names=["class 1", "class 2"]))

Tags: 文件夹target报告分类train标签generator结构
1条回答
网友
1楼 · 发布于 2024-04-18 14:34:50

这个解决方案对我有效,因为如果您使用flow_from_directory,那么您必须在模型上使用predict_generator方法,并且谈到sklearn.metrics.classification_reportytrueypred应该是1-d numpy数组,因此使用train_generator.labels

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

train_generator = train_datagen.flow_from_directory(
    train_dir, 
    target_size=(150, 150), shuffle = False,   # Must
)

predIdxs = model.predict_generator(train_generator)

predIdxs = np.argmax(predIdxs, axis=1)

print(classification_report(train_generator.labels, predIdxs,
                            target_names=["class 1", "class 2"]))

相关问题 更多 >