一、利用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))
四、运行结果(准确性还有待提升)