我正在尝试使用训练有素的模型来预测新图像。我的准确率是 95%。但是无论我输入什么,predict_classes 总是返回第一个标签 [0]。我想原因之一是我使用featurewise_center=True
and samplewise_center=True
in ImageDataGenerator
。我想我应该对我的输入图像做同样的事情。但我找不到这些功能对图像做了什么。
任何建议将不胜感激。
ImageDataGenerator
代码:
train_datagen = ImageDataGenerator(
samplewise_center=True,
rescale=1. / 255,
shear_range=30,
zoom_range=30,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2)
test_datagen = ImageDataGenerator(
samplewise_center=True,
rescale=1. / 255,
shear_range=30,
zoom_range=30,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
预测代码(我使用 100*100*3 的图像来训练模型):
model = load_model('CNN_model.h5')
img = cv2.imread('train/defect/6.png')
img = cv2.resize(img,(100,100))
img = np.reshape(img,[1,100,100,3])
img = img/255.
classes = model.predict_classes(img)
print (classes)
11/14 更新:
我将代码更改为预测图像,如下所示。但是,即使我提供了用于训练模型的图像(并且获得了 95% 的准确率),该模型仍然可以预测相同的类别。有什么我错过的吗?
model = load_model('CNN_model.h5')
img = cv2.imread('train/defect/6.png')
img = cv2.resize(img,(100,100))
img = np.reshape(img,[1,100,100,3])
img = np.array(img, dtype=np.float64)
img = train_datagen.standardize(img)
classes = model.predict_classes(img)
print(classes)