手写数字识别 ----在已经训练好的数据上根据28*28的图片获取识别概率(基于Tensorflow,Python)
通过:
手写数字识别 ----卷积神经网络模型官方案例详解(基于tensorflow,python)
手写数字识别 ----softmax回归模型官方案例详解(基于tensorflow,python)
运行程序后得的四个文件,再通过手写的图片判断识别概率
代码:
import numpy as np import tensorflow as tf from flask import flask, jsonify, render_template, request import numpy as np from pil import image from mnist import model import matplotlib.pyplot as plt from matplotlib.image import imread # tf.placeholder(dtype, shape=none, name=none) # 此函数可以理解为形参,用于定义过程,在执行的时候再赋具体的 # dtype:数据类型。常用的是tf.float32,tf.float64等数值类型 # shape:数据形状。默认是none,就是一维值,也可以是多维,比如[2,3], [none, 3]表示列是3,行不定 # name:名称。 # 返回:tensor 类型 x = tf.placeholder("float", [none, 784]) '''用于运行tensorflow操作的类。 ''' # session可能拥有的资源,如:tf.variable,tf.queuebase和tf.readerbase。 # 不再需要时释放这些资源是非常重要的。 # 为此,请在session中调用tf.session.close方法,或使用session作为上下文管理器 sess = tf.session() # 保存和恢复都需要实例化一个 tf.train.saver。 # saver = tf.train.saver() # 在训练循环中,定期调用 saver.save() 方法,向文件夹中写入包含了当前模型中所有可训练变量的 checkpoint 文件。 # saver.save(sess, flags.train_dir, global_step=step) # 之后,就可以使用 saver.restore() 方法,重载模型的参数,继续训练或用于测试数据。 # saver.restore(sess, flags.train_dir) # restore trained data with tf.variable_scope("regression"): y1, variables = model.regression(x) saver = tf.train.saver(variables) saver.restore(sess, "mnist/data/regression.ckpt") # tf.get_variable(<name>, <shape>, <initializer>) 创建或返回给定名称的变量 # tf.variable_scope(<scope_name>) 管理传给get_variable()的变量名称的作用域 with tf.variable_scope("convolutional"): keep_prob = tf.placeholder("float") y2, variables = model.convolutional(x, keep_prob) saver = tf.train.saver(variables) saver.restore(sess, "mnist/data/convolutional.ckpt") def regression(input): # print('-------------------regression') # print('y2:' + str(y1)) # print(input) return sess.run(y1, feed_dict={x: input}).flatten().tolist() # run( # fetches, # feed_dict=none, # options=none, # run_metadata=none # ) def convolutional(input): # print('-------------------convolutional') # print('y2:' + str(y2)) # print( input) return sess.run(y2, feed_dict={x: input, keep_prob: 1.0}).flatten().tolist() # im = image.open(r'c:\users\admin\desktop\无标题.png') # im2 = np.array(im) # print(im2) # img = imread(r'c:\users\admin\desktop\无标题.png') # 读入图像(设定合适的路径!) # plt.imshow(img) # plt.arr # plt.show() # 读取图片 im = image.open(r'c:\users\admin\desktop\2.png') # 显示图片 # im.show() im = im.convert("l") # im.show() data = im.getdata() data = np.matrix(data) # print data # 变换成512*512 data = np.reshape(data, (784, 1)) # new_im = image.fromarray(data) # # 显示图片 # new_im.show() input = ((255 - np.array(data, dtype=np.uint8)) / 255.0).reshape(1, 784) # # print(input) output1 = regression(input) output2 = convolutional(input) print(output1) print(output2)
运行后输出数据:其序号对应值为识别的数字,值为概率,有科学计数法显示数据。
[0.002712834160774946, 0.37007448077201843, 0.38919582962989807, 0.04636502265930176, 2.2569240172742866e-05, 0.12520278990268707, 0.04699072241783142, 0.0002446999424137175, 0.01896093040704727, 0.00023008222342468798](softmax回归模型)
[0.0004617558151949197, 0.02070416323840618, 0.9636037349700928, 0.00868076179176569, 6.441913137678057e-05, 0.003921648487448692, 0.0009535282733850181, 0.0006638980703428388, 0.0006735732895322144, 0.0002723101933952421](卷积神经网络模型)
0.38919582962989807
0.9636037349700928
成功识别图片数字为2
相关代码链接:https://download.csdn.net/download/qq_35554617/10883571
上一篇: C语言:求两个整数之和
下一篇: 赚了5000万,却怎么也甩不掉焦虑!