Python 为什么我的keras模型具有很好的准确性,但预测却很糟糕?

Python 为什么我的keras模型具有很好的准确性,但预测却很糟糕?,python,numpy,model,keras,prediction,Python,Numpy,Model,Keras,Prediction,所以,我试图建立一个模型,可以预测涂鸦。我正在使用谷歌的快速绘制数据:这些数据是渲染成28x28灰度位图numpy数组的图像。我只选了10门课,拍了60000张照片进行训练/评估。我得到了91%的测试准确率。当我试图用测试数据中的数据进行预测时,它是有效的。但当我用画笔画一幅画并将它转换成28x28时,它并不能做出很好的预测。我需要什么样的数据?图像需要什么样的预处理 这就是我如何预处理google的npy文件中的数据 def load_set(name,path,resultx,resulty

所以,我试图建立一个模型,可以预测涂鸦。我正在使用谷歌的快速绘制数据:这些数据是渲染成28x28灰度位图numpy数组的图像。我只选了10门课,拍了60000张照片进行训练/评估。我得到了91%的测试准确率。当我试图用测试数据中的数据进行预测时,它是有效的。但当我用画笔画一幅画并将它转换成28x28时,它并不能做出很好的预测。我需要什么样的数据?图像需要什么样的预处理

这就是我如何预处理google的npy文件中的数据

def load_set(name,path,resultx,resulty,label):
    loaded_set = np.load(path+name+".npy")
    loaded_set = loaded_set.reshape(loaded_set.shape[0],1,28,28)
   # print(name,loaded_set.shape)
    loaded_set = loaded_set[0:6000,0:6000,0:6000,0:6000]
    resultx = np.append(resultx,loaded_set,axis=0)
    resulty = createLabelArray(label,loaded_set.shape[0],resulty)
    print("loaded "+name)
    return resultx,resulty

def createLabelArray(label,size,result):
    for i in range(0,size):
        result = np.append(result,[[label]],axis=0)
    return result
其中label是该类别所需的标签。 然后我把它们洗牌,然后把所有的东西都洗牌。 这就是我试图处理新图像的方式:

print("[INFO] loading and preprocessing image...")
image = image_utils.load_img(os.path.join(path, name), grayscale=True,target_size=(28, 28))
image = image_utils.img_to_array(image)
print(image.shape)
image = np.expand_dims(image, axis=0)
print(image.shape)
image = image.astype('float32')
image /= 255
return image

请帮帮我,我已经在这上面呆了一段时间了。谢谢你

这似乎是一个典型的过度装修的例子

请尝试10次交叉验证以获得模型的准确性。
在KERA中进一步使用正则化和脱落,以防止过度拟合。

我认为这不是过度拟合的情况。我想我没有对我制作的涂鸦的新图像进行预处理。如果我从谷歌的数据中给它看不见的数据,这个模型预测得很好。测试数据的准确率达到91%。我不知道你们的数据集有多大,你们有多少训练示例。但是假设你有足够的训练/测试示例来学习一个非常通用的模型,如果你想将一个学习过的模型推广到你画的图像上,您必须1向验证集中添加一些图形,或2使用在数据集中完成的相同预处理对图形进行预处理。我在绘画中绘制图形是什么意思?它是来自你训练过的10门课程中的一门,还是其他课程?它与列车数据的匹配程度如何?我的图纸来自其中一个类别。我认为问题在于预处理。我对数据集中的预处理不是很确定。我有谷歌的.npy文件。奇怪的是,如果我保留了一些数据而没有将其放入网络中,然后尝试预测那些在我的网络中看不到的数据,它会正确预测。所以,我认为问题在于如何预处理我可以绘制的图像,使其与我的数据预处理相匹配