model.predict_generator() 和 model.predict() 在多类别分类中给出不同的输出标签?
model.predict_generator() and model.predict() gives different output label in multicategories classification?
使用 model.predict_generator()
绘制混淆矩阵给出了良好的结果,而使用 model.predict()
预测单个图像给出了不同的输出标签。
from sklearn.externals import joblib
loaded_model = joblib.load("CNNmodel.pkl")
from keras.preprocessing.image import ImageDataGenerator
test_datagen = ImageDataGenerator(rescale=1./255)
test_set = test_datagen.flow_from_directory(
'dataset/Test',
target_size=(28, 28),
batch_size=32,shuffle=False,
color_mode='grayscale',
class_mode='categorical')
import matplotlib.pyplot as plt
test_set.reset()
Y_pred = loaded_model.predict_generator(test_set,4930 // 32+1)
y_pred = np.argmax(Y_pred,axis=-1)
s=confusion_matrix(test_set.classes,y_pred)
this gives good confusion matrix result but
test_image=image.load_img('dataset/Test/character_1_ka/017_02.jpg',target_size=(28,28),color_mode='grayscale')
test_image=image.img_to_array(test_image)
test_image=np.expand_dims(test_image,axis=0)
result=loaded_model.predict(test_image)
在预测单个图像时,它不会预测 predict_generator
提供的结果。它预测所有图像的相同输出。单个图像预测为不同的图像给出相同的输出标签[43]。
test_datagen 使用 rescale=1./255 即标准化数据。基本上它将 1/255 乘以测试集中的所有图像。
当你通过预测传递它时,你还没有将它应用到图像上。
尝试
test_image = test_image/255.
然后将其传递给预测,它应该可以正常工作。
使用 model.predict_generator()
绘制混淆矩阵给出了良好的结果,而使用 model.predict()
预测单个图像给出了不同的输出标签。
from sklearn.externals import joblib
loaded_model = joblib.load("CNNmodel.pkl")
from keras.preprocessing.image import ImageDataGenerator
test_datagen = ImageDataGenerator(rescale=1./255)
test_set = test_datagen.flow_from_directory(
'dataset/Test',
target_size=(28, 28),
batch_size=32,shuffle=False,
color_mode='grayscale',
class_mode='categorical')
import matplotlib.pyplot as plt
test_set.reset()
Y_pred = loaded_model.predict_generator(test_set,4930 // 32+1)
y_pred = np.argmax(Y_pred,axis=-1)
s=confusion_matrix(test_set.classes,y_pred)
this gives good confusion matrix result but
test_image=image.load_img('dataset/Test/character_1_ka/017_02.jpg',target_size=(28,28),color_mode='grayscale')
test_image=image.img_to_array(test_image)
test_image=np.expand_dims(test_image,axis=0)
result=loaded_model.predict(test_image)
在预测单个图像时,它不会预测 predict_generator
提供的结果。它预测所有图像的相同输出。单个图像预测为不同的图像给出相同的输出标签[43]。
test_datagen 使用 rescale=1./255 即标准化数据。基本上它将 1/255 乘以测试集中的所有图像。
当你通过预测传递它时,你还没有将它应用到图像上。
尝试
test_image = test_image/255.
然后将其传递给预测,它应该可以正常工作。