通过:

手写数字识别  ----卷积神经网络模型官方案例详解(基于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

手写数字识别 ----在已经训练好的数据上根据28*28的图片获取识别概率(基于Tensorflow,Python)的更多相关文章

  1. 使用TensorFlow的卷积神经网络识别手写数字(2)-训练篇

    import numpy as np import tensorflow as tf import matplotlib import matplotlib.pyplot as plt import ...

  2. TensorFlow实战之Softmax Regression识别手写数字

         关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2018年02月21日 23:10:04所撰写内容(http://blog.c ...

  3. C-01 手写数字识别

    目录 手写数字识别应用程序 一.导入模块 二.图像转向量 三.训练并测试模型 四.模型转应用程序 4.1 展示图片 4.2 处理图片 4.3 预测图片 更新.更全的<机器学习>的更新网站, ...

  4. KNN 算法-实战篇-如何识别手写数字

    公号:码农充电站pro 主页:https://codeshellme.github.io 上篇文章介绍了KNN 算法的原理,今天来介绍如何使用KNN 算法识别手写数字? 1,手写数字数据集 手写数字数 ...

  5. 【百度飞桨】手写数字识别模型部署Paddle Inference

    从完成一个简单的『手写数字识别任务』开始,快速了解飞桨框架 API 的使用方法. 模型开发 『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入 ...

  6. 实现手写数字识别(数据集50000张图片)比较3种算法神经网络、灰度平均值、SVM各自的准确率—Jason niu

    对手写数据集50000张图片实现阿拉伯数字0~9识别,并且对结果进行分析准确率, 手写数字数据集下载:http://yann.lecun.com/exdb/mnist/ 首先,利用图片本身的属性,图片 ...

  7. 学习OpenCV——SVM 手写数字检测

    转自http://blog.csdn.net/firefight/article/details/6452188 是MNIST手写数字图片库:http://code.google.com/p/supp ...

  8. 07 训练Tensorflow识别手写数字

    打开Python Shell,输入以下代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input ...

  9. TensorFlow------单层(全连接层)实现手写数字识别训练及测试实例

    TensorFlow之单层(全连接层)实现手写数字识别训练及测试实例: import tensorflow as tf from tensorflow.examples.tutorials.mnist ...

随机推荐

  1. JAVA之锁-volatile

    锁是JAVA多线程关键,也是面试中必问的, 在此好好总结一下. (先要从进程和线程说起,此处先欠下,回头专门说一下操作系统是怎么管理进程和线程的) 说到多线程就要说说JAVA的内存模型:图片来自于网络 ...

  2. DirectX11--HLSL编译着色器的三种方法

    前言 本教程不考虑Effects11(FX11),而是基于原始的HLSL. 目前编译与加载着色器的方法如下: 使用Visual Studio中的HLSL编译器,随项目编译期间一同编译,并生成.cso( ...

  3. Docker安装rabbitmq

    前面的文章中我们的docker已经安装好了,我的最终目的是用docker来安装rabbitmq,所以本文我记录一下我用docker安装rabbitmq的过程: 1.下载镜像(下载management的 ...

  4. J.U.C-volatile

      禁止指令重排  

  5. MyRolan (快速启动小工具)

    类似 Rolan的快速启动工具. 启动后隐藏,当鼠标移至左上角时,窗口显示,点击项目可运行程序. GitHub地址: MyRolan . #if defined(UNICODE) && ...

  6. 第三周四则运算辅助(CAI)结对项目需求文档

    小学四则运算辅助(CAI) UI需求: 目的:让更对的小学生能学到更多的知识,提高做题的效率. 背景:该系统应用于小学生数学算术题的出题,判断对错以及错题本,该系统为解决家长每天为孩子出题的不便而解决 ...

  7. [转] 图解Seq2Seq模型、RNN结构、Encoder-Decoder模型 到 Attention

    from : https://caicai.science/2018/10/06/attention%E6%80%BB%E8%A7%88/ 一.Seq2Seq 模型 1. 简介 Sequence-to ...

  8. day08 文件操作

    1.三种字符串: (1)u'' 普通字符串 ---> u'abc' ---> 默认的文本方式,以字符作为文本的输出方式 (2)b'' 二进制字符串 ---> b'ASCII码' -- ...

  9. expect 批量自动部署ssh 免密登陆 之 三

    #!/bin/expect -- ########################################## zhichao.hu #Push the id.pas.pub public k ...

  10. 手把手教你写vue插件并发布(二)

    前记:上一篇 https://www.cnblogs.com/adouwt/p/9211003.html, 说到了一个完整的vue插件开发.发布的流程,总结下来就讲了这么一个事,如何注入vue, 如果 ...