本文主要是介绍深度学习神经网络 MNIST手写数据辨识 3 应用接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
整理一下,形成一个应用程序。
首先仍然是导入各种包:
from PIL import Image
import numpy as np
import tensorflow as tf
import mnist_forward2
import mnist_backward2
import mnist_test2
def restore_model1(testPicArr):
#创建一个默认图,在该图中执行以下操作
第一个函数是恢复模型的函数。已经介绍过很多次了,这里再简单讲解一下。
构建计算图的输入输出,这里x代表输入数据,y代表输出数据,preValue相当于把输出y中数据最高的位的坐标得到(概率最大值)
x = tf.placeholder(tf.float32, [None, mnist_forward2.INPUT_NODE])y = mnist_forward2.forward(x, None)preValue = tf.argmax(y, 1) #得到概率最大的预测值
然后恢复滑动平均值参数,并开始训练会话。注意会话中得到概率最大值的函数:
preValue = sess.run(preValue, feed_dict={x:testPicArr})
它会执行整个计算图。
第二个函数是用来初始化图像的程序:
def pre_pic(picName):
没什么可说的,粘贴如下:
img = Image.open(picName)reIm = img.resize((28,28),Image.ANTIALIAS)im_arr = np.array(reIm.convert('L'))threshold = 50for i in range(28):for j in range(28):im_arr[i][j] = 255 - im_arr[i][j]if(im_arr[i][j]<threshold):im_arr[i][j] = 0else:im_arr[i][j] = 255nm_arr = im_arr.reshape([1,784])nm_arr = nm_arr.astype(np.float32)img_ready = np.multiply(nm_arr,1.0/255.0)return img_ready
这里的reIm = img.resize((28,28),Image.ANTIALIAS)表示变为大小28*28,并启动反混叠插值。
模式“L” 为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白。注意输入数据的维度,[1,784] ,表示1行784列.
第三个函数是调用我们之前写的两个函数,首先输入图像测试路径,然后预处理,之后恢复会话并测试。
for i in range(testNum):testPic = input("the path of test picture:")testPicArr = pre_pic(testPic)preValue = restore_model1(testPicArr)print("The prediction number is:" + str(preValue))
我们上传几张自己写的图片:
测试结果都是正确的。
这篇关于深度学习神经网络 MNIST手写数据辨识 3 应用接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!