Keras加载模型进行预测,预测值一直为某一类

1、自定义模型

keras方便进行深度学习,我们可以像搭建积木一样去构建自己的识别网络、训练、保存得到最终的模型。

2、加载模型预测

在这里遇到了问题,发现预测的结构一直为某一类,且训练的样本没有出现不平衡现象,每类的样本比例都为1:1。困扰了好久,发现网上有人给出了答案,是图像加载的方式有问题:

iamge_path = r"D:\tfTest\Negative\01324.jpg"
ima =cv2.imread(iamge_path)
ima_w , ima_h, channels = ima.shape
w_w =0
w_h = 0
index = 128
#刚开始的加载方式,预测结果有问题
single_image = cv2.resize(ima,(128,128))
single_image = np.array(single_image,dtype=np.float32)/255.0
single_image = single_image[np.newaxis, : ]
result = model.predict(single_image)
print(result)

#方法二,可以正确进行预测
image = load_img(iamge_path)
image = img_to_array(image)
image = cv2.resize(image,(128,128))
image = np.expand_dims(image,axis =0)
result = model.predict(image)
print(result)

3、其他情况(数据处理保持一致)

或者我们需要对训练数据和测数据做相同的变化,比如都进行归一化或者都除以标准值等基本操作。在自己操作的过程中,就犯了这样的错,训练时,我们进行了归一化以及除以了均值等基本操作,因此,在测试的时候,我们必须进行同等的操作:

#训练时,数据一次性加载不完,就必须使用此方法,对其基本设置,这里不使用数据扩充
datagen = ImageDataGenerator(
        rescale=1.0/255,
        featurewise_center=False,  # set input mean to 0 over the dataset
        samplewise_center=False,  # set each sample mean to 0
        featurewise_std_normalization=False,  # divide inputs by std of dataset
        samplewise_std_normalization= False,  # divide each input by its std
        zca_whitening=False,  # apply ZCA whitening
       # rotation_range=45,  # randomly rotate images in the range (deg 0 to 180)
       # width_shift_range=0.1,  # randomly shift images horizontally
       # height_shift_range=0.1,  # randomly shift images vertically
       # horizontal_flip=True,  # randomly flip images
        vertical_flip=False)  # randomly flip images
#测试的时候,必须进行归一化处理,否则预测一直是某一类
new_Image1 = temp_image/255.0

4、感悟

路漫漫其修远兮,吾将上下而求索。。。。。。

你可能感兴趣的:(人生苦短,我学python,keras,model,预测,predict,深度学习)