Je suis très nouveau à Keras. J'ai formé un modèle et je voudrais prédire certaines images stockées dans des sous-dossiers (comme pour la formation). Pour les tests, je veux prédire 2 images de 7 classes (sous-dossiers). Le test_generator ci-dessous voit 14 images, mais je reçois 196 prédictions. Où est l'erreur? Merci beaucoup!
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(200, 200),
color_mode="rgb",
shuffle = "false",
class_mode='categorical')
filenames = test_generator.filenames
nb_samples = len(filenames)
predict = model.predict_generator(test_generator,nb_samples)
Vous pouvez modifier la valeur de batch_size dans flow_from_directory de la valeur par défaut (qui est batch_size = 32) à batch_size = 1. Définissez ensuite les étapes de Predict_Generator sur le nombre total de vos images de test. Quelque chose comme ça:
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(200, 200),
color_mode="rgb",
shuffle = False,
class_mode='categorical',
batch_size=1)
filenames = test_generator.filenames
nb_samples = len(filenames)
predict = model.predict_generator(test_generator,steps = nb_samples)
Défaut batch_size
dans le générateur est 32. Si vous voulez faire 1 prédiction pour chaque échantillon de nb_samples total, vous devez diviser vos nb_samples avec le batch_size
. Ainsi avec un batch_size
sur 7 vous n'avez besoin que de 14/7 = 2 étapes pour vos 14 images
desired_batch_size=7
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(200, 200),
color_mode="rgb",
shuffle = False,
class_mode='categorical',
batch_size=desired_batch_size)
filenames = test_generator.filenames
nb_samples = len(filenames)
predict = model.predict_generator(test_generator,steps =
np.ceil(nb_samples/desired_batch_size))
Le problème est l'inclusion de nb_samples
dans le predict_generator
qui crée 14 lots de 14 images
14*14 = 196