在 keras 中加载测试图像

Load test images in keras

我正在用 10 classes 训练一个 CNN。训练文件夹每个 class 有 40 张图像,验证文件夹每个 class 有 10 张图像。我有一个包含 100 个测试图像的文件夹。我如何加载它们(通过使用 imagedatagenerator),然后用我训练的模型进行预测?每次我 运行 model.predict() 相同的测试数据时,我都会得到不同的预测。这是我正在使用的数据集的 link https://www.kaggle.com/s214316001/datasets214 。这是我的代码

import tensorflow as tf
import matplotlib.pyplot as plt
import cv2
import os
import numpy as np
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing import image
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D,BatchNormalization,Dropout

train = ImageDataGenerator(rescale = 1/255)
train_dataset = train.flow_from_directory('../input/datasets214/train/train', 
                                     target_size = (200,200),batch_size = 5,
                                     class_mode = 'categorical')
validation_dataset=train.flow_from_directory('../input/datasets214/validation/validation', 
                                     target_size = (200,200),batch_size = 5,
                                     class_mode = 'categorical')


model = Sequential()

model.add(Conv2D(16, (3, 3), input_shape=(200,200,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(10, activation='softmax'))



model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(train_dataset,steps_per_epoch=5,epochs=300,validation_data=validation_dataset)
#prediction
datagen = ImageDataGenerator(rescale=1/255)
gen =datagen.flow_from_directory('../input/datasets214/gnr_test/gnr_test',shuffle = 'False',batch_size=100,
                              target_size = (200,200),classes = ['test'])
predict = model.predict(gen)
print('      fileID','label')
for file,i in enumerate(gen.filenames):

   j = predict[file]
   k = list(j).index(max(j)) 




   print( i,k)

在 gen 中你设置了 shuffle=False