一、利用windows自带画图工具
画布大小为28*28,用刷子工具,颜色为黑色,写字并保存。
二、python代码将其转为灰度图
from PIL import Image import numpy as np class Data2: def getTestPicArray(self,filename): im = Image.open(filename) x_s = 28 y_s = 28 out = im.resize((x_s, y_s), Image.ANTIALIAS) im_arr = np.array(out.convert('L')) num0 = 0 num255 = 0 threshold = 100 for x in range(x_s): for y in range(y_s): if im_arr[x][y] > threshold: num255 = num255 + 1 else: num0 = num0 + 1 if (num255 > num0): #print("convert!") for x in range(x_s): for y in range(y_s): im_arr[x][y] = 255 - im_arr[x][y] if (im_arr[x][y] < threshold): im_arr[x][y] = 0 # if(im_arr[x][y] > threshold) : im_arr[x][y] = 0 # else : im_arr[x][y] = 255 # if(im_arr[x][y] < threshold): im_arr[x][y] = im_arr[x][y] - im_arr[x][y] / 2 out = Image.fromarray(np.uint8(im_arr)) out.save("C:\\Users\\Administrator\\Desktop\\out\\" + filename) # print im_arr nm = im_arr.reshape((1, 784)) nm = nm.astype(np.float32) nm = np.multiply(nm, 1.0 / 255.0) # print(nm.reshape((784,1)).shape) #print(nm.shape) return nm.reshape((784,1)) # return nm #getTestPicArray(r"C:\Users\Administrator\Desktop\2.png") #Data2().getTestPicArray(r"2.png")
其中用到了第三方库
三、在原神经网络代码中加入自定义测试数据(详细见上一文章) import mnist_loader training_data, validation_data, test_data = mnist_loader.load_data_wrapper() training_data = list(training_data) import network net = network.Network([784, 30, 10]) net.SGD(training_data, 30, 10, 2.0, test_data=test_data) import image_data import test4 for i in range(0,10): file = str(i)+".png" #data = image_data.ImageData().getArrayFromImage(file) data = test4.Data2().getTestPicArray(file) print("预测:",file,"的结果为",net.cjtest(data)) print("-----------------------------------------------------------------------") for i in range(0,10): file = str(i)+".png" data = image_data.ImageData().getArrayFromImage(file) #data = test4.Data2().getTestPicArray(file) print("预测:",file,"的结果为",net.cjtest(data))四、运行结果(准确性还有待提升)