如何查看来自测试生成器的图像以查看预测是否正确
How to view the image from test generator to see if the prediction is correct or not
我正在训练水果class化模型。截至目前,我的 classes 是:
['Fresh Apples'、'Fresh Bananas'、'Fresh Oranges']
我正在使用 ImageDataGenerator 和 flow_from_directory 使用训练、验证和测试生成器。我已经训练了模型,现在想将测试生成器输入模型以查看模型的性能。现在我在测试生成器中只有 2 张图像。我有以下代码来进行预测:
predictions = tuned_model.predict(test_generator)
score = tf.nn.softmax(predictions[0])
print(
'This image most likely belongs to {} with a {:.2f} percent
confidence.'.format(
class_names[np.argmax(score)], 100 * np.max(score)
)
)
结果如下:
This image most likely belongs to Fresh Apples with a 46.19 percent confidence.
是的,它的准确性很低,我只训练了 10 个时期,哈哈。但是,有没有办法可以看到正在测试哪个图像?或者知道这个预测是否正确的方法?
编辑:
包括生成器代码...
generator = ImageDataGenerator(
rotation_range=45,
rescale=1./255,
horizontal_flip=True,
vertical_flip=True,
validation_split=.2
)
train_generator = generator.flow_from_directory(
train_path,
target_size=(im_height, im_width),
batch_size = batch_size,
subset='training'
)
validation_generator = generator.flow_from_directory(
train_path,
target_size=(im_height, im_width),
batch_size=batch_size,
subset='validation'
)
test_generator = generator.flow_from_directory(
test_path,
target_size= (im_height, im_width),
batch_size= batch_size,
)
就我的 class 标签而言,截至目前,我只是对它们进行了硬编码
class_names = ['Fresh Apples', 'Fresh Bananas', 'Fresh Bananas']
我知道我可能应该导入 os 并根据文件结构创建标签,但除非绝对需要,否则我稍后会这样做。
我假设您在创建测试生成器时在 flow_from_directory 中设置了 shuffle=False。然后使用
files=test_generator.filenames
class_dict=test_generator.class_indices # a dictionary of the form class name: class index
rev_dict={}
for key, value in class_dict.items()
rev_dict[value]=key # dictionary of the form class index: class name
files 是文件名列表,按照文件为预测显示的顺序排列。
然后做
predictions = tuned_model.predict(test_generator)
然后遍历预测
for i, p in enumerate(predictions)
index=np.argmax(p)
klass=rev_dict[index]
prob=p[index]
print('for file ', files[i], ' predicted class is ', klass,' with probability ',prob)
当然你也可以显示图片
我正在训练水果class化模型。截至目前,我的 classes 是: ['Fresh Apples'、'Fresh Bananas'、'Fresh Oranges']
我正在使用 ImageDataGenerator 和 flow_from_directory 使用训练、验证和测试生成器。我已经训练了模型,现在想将测试生成器输入模型以查看模型的性能。现在我在测试生成器中只有 2 张图像。我有以下代码来进行预测:
predictions = tuned_model.predict(test_generator)
score = tf.nn.softmax(predictions[0])
print(
'This image most likely belongs to {} with a {:.2f} percent
confidence.'.format(
class_names[np.argmax(score)], 100 * np.max(score)
)
)
结果如下:
This image most likely belongs to Fresh Apples with a 46.19 percent confidence.
是的,它的准确性很低,我只训练了 10 个时期,哈哈。但是,有没有办法可以看到正在测试哪个图像?或者知道这个预测是否正确的方法?
编辑:
包括生成器代码...
generator = ImageDataGenerator(
rotation_range=45,
rescale=1./255,
horizontal_flip=True,
vertical_flip=True,
validation_split=.2
)
train_generator = generator.flow_from_directory(
train_path,
target_size=(im_height, im_width),
batch_size = batch_size,
subset='training'
)
validation_generator = generator.flow_from_directory(
train_path,
target_size=(im_height, im_width),
batch_size=batch_size,
subset='validation'
)
test_generator = generator.flow_from_directory(
test_path,
target_size= (im_height, im_width),
batch_size= batch_size,
)
就我的 class 标签而言,截至目前,我只是对它们进行了硬编码
class_names = ['Fresh Apples', 'Fresh Bananas', 'Fresh Bananas']
我知道我可能应该导入 os 并根据文件结构创建标签,但除非绝对需要,否则我稍后会这样做。
我假设您在创建测试生成器时在 flow_from_directory 中设置了 shuffle=False。然后使用
files=test_generator.filenames
class_dict=test_generator.class_indices # a dictionary of the form class name: class index
rev_dict={}
for key, value in class_dict.items()
rev_dict[value]=key # dictionary of the form class index: class name
files 是文件名列表,按照文件为预测显示的顺序排列。 然后做
predictions = tuned_model.predict(test_generator)
然后遍历预测
for i, p in enumerate(predictions)
index=np.argmax(p)
klass=rev_dict[index]
prob=p[index]
print('for file ', files[i], ' predicted class is ', klass,' with probability ',prob)
当然你也可以显示图片