使用CNN Keras进行预测时的问题

时间:2020-05-11 01:34:50

标签: python tensorflow keras neural-network

我正在尝试制作一个程序,您可以在其中输入(手写字母)图像,并输出预测。现在,我已经对模型进行了完整的训练(精度为90%),并保存了包含权重和所有内容的h5文件。

但是,当我尝试加载模型并预测图像时,它会使一切完全错误。

在这里,我首先收到一个文件路径,然后使用cv2加载图像并将其缩小为28x28。然后,由于将网络训练为带1通道的图像,因此我将图像转换为灰度,这时我调用了评估方法。

def fileBrowser():
    filename = filedialog.askopenfilename(initialdir="/", title="Select file",
                                      filetypes=(("jpeg files", "*.jpg"), ("all files", "*.*")))
    global img
    img = cv2.imread(filename)
    img = cv2.resize(img, dsize=(28, 28))
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    prediction, confidence = network.evaluate(img)

之后,图像将重塑为4维。然后,我调用model.predict,其中将图像转换为numpy数组并除以255。得到的值小于1。

class Network:
    class_mapping = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'

    def __init__(self):
        self.model=keras.models.load_model('Z:\Projects\Python\gaoHandwriting\model.h5')

    def evaluate(self, img):
        img = img.reshape(1, 28, 28, 1))
        prediction = self.model.predict(np.array(img/255.))
        print(prediction[0])

        return self.class_mapping[int(str(np.argmax(prediction[0]).item()))], str('%.2f' %
                                                            (prediction[0][int(str(np.argmax(prediction[0]).item()))]))

我每次运行此命令,都会使我的概率小于1%。我真的不知道为什么它不能准确预测,所以任何帮助将不胜感激!

0 个答案:

没有答案