我是靠谱客的博主 调皮手套,最近开发中收集的这篇文章主要介绍tensorflow入门:利用全连接神经网络实现手写数字识别(四),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本节代码NumReco.py  利用minist_trian中训练好的模型识别本地图片

首先是图像预处理操作,对输入的图片进行灰度化,并处理得到二值化图片矩阵,即构成后来神经网络的输入向量。

def imageprepare(file_name):

    im = cv2.imread(file_name,0)
    print(file_name)
    pixels = []
    h, w = im.shape
    #normalize pixels to 0 and 1. 0 is pure white, 1 is pure black.
    for i in range(h):
        for j in range(w):
            pixels.append((255-im[i, j])*1.0/255.0)
    print(pixels)
    return pixels

 

定义识别函数。在函数中调用训练好的模型并输出识别结果。因为重新构造模型,所以需要重新调用部分变量的定义方法,与minist_rain中的train函数中类似。

def recognize(file_name):
    with tf.Graph().as_default() as g:
        x = tf.placeholder(tf.float32,[None,mnist_inference.INPUT_NODE],name="x-input")
        y_ = tf.placeholder(tf.float32,[None,mnist_inference.OUTPUT_NODE],name="y-output")

        y = mnist_inference.inference(x,None)

        #将预测值与正确值相比较得到Bool型 然后将Bool型转为实数型并求平均值得准确度
        #correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
        #accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

        # 初始化滑动平均类
        mavg = tf.train.ExponentialMovingAverage(mnist_train.Moving_Average_Decay)

        variable_to_restore = mavg.variables_to_restore()
        saver = tf.train.Saver(variable_to_restore)

        # validate_feed = {x: mnist.validation.images,
        #                  y_: mnist.validation.labels}
        with tf.Session() as sess:
            result = imageprepare(file_name)
            #checkpoint函数会自动找到最新模型的文件名
            ckpt = tf.train.get_checkpoint_state("model/")
            if ckpt and ckpt.model_checkpoint_path:
                saver.restore(sess, ckpt.model_checkpoint_path)
                prediction = tf.argmax(y, 1)
                predint = prediction.eval(feed_dict={x: [result]}, session=sess)
                print("result :",predint[0])
                return (predint[0])
            else:
                print("no model found")
                return

 

通过该代码可以实现识别本地图片(图片大小必须为28*28),然后出去可视化的想法,自己用tkinter写了一个简单的界面,运行效果如下:

 

项目代码地址:https://github.com/Zhu-haow/NumberDec_Mnist.git

最后

以上就是调皮手套为你收集整理的tensorflow入门:利用全连接神经网络实现手写数字识别(四)的全部内容,希望文章能够帮你解决tensorflow入门:利用全连接神经网络实现手写数字识别(四)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部