我有一个用于图像分类的标准 CNN,使用以下生成器来获取数据集:
generator = validation_image_generator.flow_from_directory(batch_size=BATCH_SIZE,
directory=val_dir,
shuffle=False,
target_size=(100,100),
class_mode='categorical')
我可以通过以下方式轻松获得预测标签:
predictions = model.predict(dataset)
现在我想以与预测相同的顺序获取所有预测的(原始)真实标签和图像,以便比较它们。我确信这些信息很容易存储在某个地方,但我一直找不到。
您必须从数据生成器获取图像并将它们提供给 model.predict。如果 image_gen 是你的 ImageDataGenerator 所以你可以使用:
X,y = image_gen.next()
prediction = model.predict(X)
现在 X 是您的图像(例如 X[0] 是第一张图像,X[1] 是第二张图像,依此类推),y 是它们对应的标签,而预测是您为每个图像输出的模型。
这将从 ImageDataGenerator 给出一个批次并显示 X、y 和预测。要在整个 epoch 中运行它,您必须使用 for 循环:
for step in range(step_per_epoch):
X, y = image_gen.next()
prediction = model.predict(X)
其中 step_per_epoch 应该是 dataset_size/batch_size。
但请记住 ImageDataGenerator 随机工作。因此,如果您有 100 张图像并且您的批次大小为 10,如果您从 ImageDataGenerator 中提取 10 个批次,您可能会看到一些图像两次而您不会看到其他一些图像。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句