我使用EMNIST byclass数据集训练了我的模型,加载了培训和测试数据的.csv文件以及数字(0-9)和字母(A-Z,a-z)分类的标签。我的模型评估准确率在87%左右。但是当我使用keras load_model()使用最佳保存的模型权重(.hdf5)时,它给了我奇怪的结果,好像没有进行任何训练。但是在加载模型后如果我运行模型评估仍然可以给出87%的准确率。
然后在预测任何新图像时会出现什么问题而我的预测错误?
由于
答案 0 :(得分:0)
我希望将所有关于上述问题的人传达给我 -
我还想提一下,我正在使用所有必需的EMNIST训练/验证数据的预处理,我也用于MNIST数据。在使用MNIST数据集时,相同的代码正在进行正确的预测。但现在我正在使用EMNIST数据集来预测字母和数字。数字(A-Z,a-z,0-9),因为MNIST数据集只有数字。有没有人使用EMNIST数据集进行Alphabet&数字预测和预测发生了吗?或者EMNIST数据集仍然不适合这种预测。但在这种情况下我感到惊讶的是如何将评估准确率提高到88%。
答案 1 :(得分:0)
看起来EMNIST数据集照片是旋转和镜像的。在将图像输送到网络之前,你应该反之亦然,不要忘记按位反转和阈值处理。
x1 = cv2.imread('c9.jpg')
x2 = cv2.cvtColor(x1, cv2.COLOR_BGR2GRAY)
ret,x3 = cv2.threshold(x2, 127, 255, cv2.THRESH_BINARY)
#compute a bit-wise inversion so black becomes white and vice versa
x4 = np.invert(x3)
#make it the right size
x5 = cv2.resize(x4, (28, 28))
#rotate and flip
rows,cols = x5.shape
M = cv2.getRotationMatrix2D((cols/2,rows/2),270,1)
dst = cv2.warpAffine(x5,M,(cols,rows))
flip = cv2.flip(dst,1)
#convert to a 4D tensor to feed into our model
x6 = flip.reshape(1,28,28,1)
x7 = x6.astype('float32')
x7 /= 255
out = model.predict(x7)
print(np.argmax(out))