#tensorflow #machine-learning #keras #deep-learning #classification
#tensorflow #машинное обучение #keras #глубокое обучение #классификация
Вопрос:
Я обучил базовый классификатор изображений и застрял в довольно простой проблеме при попытке оценить результаты.
Я изо всех сил пытаюсь загрузить фактические значения моих данных проверки и соответствующие имена файлов для каждого изображения, чтобы их можно было сравнить со model.predict
значениями.
# -*- coding: utf-8 -*-
"""
Created on Sun Jan 3 21:21:02 2021
@author: Sam
"""
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_examples = 425
test_examples = 245
validation_examples = 245
img_height = img_width = 224
batch_size = 32
epochs = 100
model = keras.models.load_model('isic_model4/')
train_datagen = ImageDataGenerator(
rescale = 1.0/255,
rotation_range = 15,
zoom_range = (0.95, 0.95),
horizontal_flip = True,
vertical_flip = True,
data_format = "channels_last",
dtype = tf.float32,
)
validation_datagen = ImageDataGenerator(rescale=1.0/255, dtype=tf.float32)
test_datagen = ImageDataGenerator(rescale=1.0/255, dtype=tf.float32)
train_gen = train_datagen.flow_from_directory(
"ClassifierData/Training/",
target_size = (img_height, img_width),
batch_size=batch_size,
color_mode = "rgb",
class_mode = "binary",
shuffle = False,
seed = 123,
)
validation_gen = validation_datagen.flow_from_directory(
"ClassifierData/Validation/",
target_size = (img_height, img_width),
batch_size=batch_size,
color_mode = "rgb",
class_mode = "binary",
shuffle = False,
seed = 123,
)
test_gen = test_datagen.flow_from_directory(
"ClassifierData/Test/",
target_size = (img_height, img_width),
batch_size=batch_size,
color_mode = "rgb",
class_mode = "binary",
shuffle = False,
seed = 123,
)
METRICS = [
keras.metrics.BinaryAccuracy(name="accuracy"),
keras.metrics.Precision(name="precision"),
keras.metrics.Recall(name="recall"),
keras.metrics.AUC(name='auc'),
]
valpred1 = model.predict_classes(validation_gen)
Комментарии:
1. Вы делаете это в записной книжке Jupyter? Не могли бы вы добавить в структуру каталогов?
Ответ №1:
Вы можете получить имена и метки файлов validation_gen с помощью
filenames=validation_gen.filenames
labels=validation_gen.labels
Если вы установите shuffle=False в каталоге validation_gen.flow_from_directory, генератор предоставит файлы для model.predict в том порядке, в котором они указаны в именах файлов. Вы можете использовать приведенный ниже код для генерации прогнозов и печати результатов с указанием имен файлов
file_names=valididation_gen.filenames
labels=valididation_gen.labels
preds=model.predict(valididation_gen)
print('{0:^3s}{1:^15s}{2:^11s}{3:^16s}{4:^7s}'.format ('i', 'File Name', 'True Class', 'Predicted Class','Error' ))
for i in range(len(preds)):
p=np.argmax(preds[i])
if p==labels[i]:
error='No'
else:
error='Yes'
print ('{0:^3s}{1:^15s}{2:^11s}{3:^16s}{4:^7s}'.format ( str(i), file_names[i], str(labels[i]), str(p), error ))
вы получите печатный вывод, аналогичный этому, но с вашими собственными именами файлов
i File Name True Class Predicted Class Error
0 class001.jpg 0 0 No
1 class002.jpg 0 0 No
2 class003.jpg 0 0 No
3 class004.jpg 0 0 No
4 class005.jpg 0 0 No
5 class006.jpg 0 0 No
6 class007.jpg 0 0 No
7 class008.jpg 0 0 No
8 class009.jpg 0 0 No
9 class010.jpg 0 0 No
10 class111.jpg 1 1 No
11 class112.jpg 1 1 No