我对Keras很新。我训练了一个模型,并希望预测存储在子文件夹中的一些图像(比如用于训练)。为了测试,我想预测来自7个类(子文件夹)的2个图像。下面的test_generator可以看到14张图片,但我得到了196张预测。哪里出错了?非常感谢!
fp=0x0
答案 0 :(得分:17)
您可以将flow_from_directory中的batch_size值从默认值(即batch_size = 32)更改为batch_size = 1。然后将predict_generator的步骤设置为测试图像的总数。像这样:
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)
答案 1 :(得分:5)
生成器中的默认batch_size
为32。如果要对所有nb_samples个样本进行1个预测,则应使用batch_size
来指定nb_samples。因此,batch_size
为7时,您只需要14/7 = 2步即可获取14张图像
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))
答案 2 :(得分:3)
问题是在nb_samples
中包含了predict_generator
,这会创建14批14张图片
14*14 = 196
答案 3 :(得分:1)
使用拟合和预测,TensorFlow 现在通过生成器支持这两种方法。
答案 4 :(得分:0)
以防将来有人发现自己在这里想知道为什么使用 model.predict 和 model.predictor 获得的准确度分数不同。无论弃用警告如何,只需使用 model.predict_generator 选项。与生成器一起使用时,model.predict 似乎存在问题。