Keras: How to use predict_generator with ImageDataGenerator?

前端 未结 3 1540
我寻月下人不归
我寻月下人不归 2020-12-30 01:10

I\'m very new to Keras. I trained a model and would like to predict some images stored in subfolders (like for training). For testing, I want to predict 2 images from 7 clas

相关标签:
3条回答
  • 2020-12-30 01:12

    The problem is the inclusion of nb_samples in the predict_generator which is creating 14 batches of 14 images

    14*14 = 196
    
    0 讨论(0)
  • 2020-12-30 01:14

    Default batch_size in generator is 32. If you want to make 1 prediction for every sample of total nb_samples you should devide your nb_samples with the batch_size. Thus with a batch_size of 7 you only need 14/7=2 steps for your 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))
    
    0 讨论(0)
  • 2020-12-30 01:31

    You can change the value of batch_size in flow_from_directory from default value (which is batch_size=32 ) to batch_size=1. Then set the steps of predict_generator to the total number of your test images. Something like this:

    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)
    
    0 讨论(0)
提交回复
热议问题