TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络)
在按照上文给出的训练方法进行手写数字识别训练之后,在进行验证时出现识别准确率低的问题
直到阅读了深入浅出机器学习MNIST实战(三)一文后发现,文中使用了不同的读取验证图片的方式,而且使用此方法后,识别准确率明显提高。
其中验证图片读取代码如下:
if False:
img = Image.open(image_path).convert('L')
flatten_img = np.reshape(img, (28, 28, 1))
x = np.array([1 - flatten_img])
print(x.shape) #(1, 28, 28, 1)
else:
img = cv2.imread(image_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
rows, cols = img.shape[0:2]
for i in range(rows): # 反转一下黑白
for j in range(rows):
img[i][j] = 255 - img[i][j]
# print(i,j)
x = np.reshape(img,(1,28,28,1))
#endif
通过比较可以发现两种方法对于反转黑白的代码有明显区别
x = np.array([1 - flatten_img])
img[i][j] = 255 - img[i][j]
图片在flatten_img的取值应该是0-255,因此反转黑白应该使用
x = np.array([255 - flatten_img])
修改后进行验证,识别概率明显提升,至此该问题有效解决。