此篇博客记录一下使用Tensorflow进行手写体数字识别的经历。

  • 在慕课网进行课程学习:传送门
  • 使用minist进行input数据,
  • 建立线性(regression)和卷积(convolutional)模型训练参数
  • 在main文件夹中使用restore方法取用模型,加载模型。
TensorFlow是什么
TensorFlow是谷歌基于distbelief进行研发的第二代人工智能系统
常用于语音识别或图像识别等机器学习领域
将复杂的数据结构传输至人工智能神经网络进行分析和处理
支持CNN、RNN和LSTM算法
MNIST数据集是什么
由Google和纽约大学克朗研究所共建的手写数字数据库
共有70000张训练图像(60000张训练图像和10000张测试图像)
所有图像均是0~9的手写数字

整合步骤

训练并生成模型→暴露接口→前端调用→验证并返回结果

遇到的问题

1. numpy版本问题


解决方法:
这种问题是因为TensorFlow和numpy的版本不匹配,我们需要对numpy降版本,现在我的numpy是1.17.0。
所以在cmd中执行以下命令:

pip uninstall numpy   #卸载现在的版本
pip install numpy==1.16.0  #指定版本装numpy

如果装了1.16.0仍然报错,那么就继续降版本。安装后就OK。

2. h5py新版本对numpy的兼容问题

FutureWarning: Conversion of the second argument of issubdtype from
float to np.floating is deprecated. In future, it will be treated
as np.float64 == np.dtype(float).type. from ._conv import
register_converters as _register_converters

解决方法:
对h5py进行更新升级,使用如下方法完美解决!

 pip install h5py==2.8.0rc1

3. 语句缩进问题


语句缩进数的空格数不一致,会导致运行错误:

IndentationError: unindent does not match any outer indentation level

解决方法:将报错位置的代码段严格按照逻辑结构进行缩进

4.参数设置错误

错误 TypeError: Value passed to parameter ‘input’ has DataType int32 not
in list of allowed values: float16, bfloat16, float32, float64

解决方法:
model.py conv2d那个文件改一下下面这行把:

return tf.nn.conv2d([1, 1, 1, 1], padding='SAME')

改成:

return tf.nn.conv2d(x, W, [1, 1, 1, 1], padding='SAME')

没有传入参数当然出错喽!

训练了20000轮之后,卷积模型的准确率达到了99.21%。模型自动保存在如下路径:

C:\Users\dell\PycharmProjects\mnist_testdemo\mnist\data

5. TensorFlow版本问题

问题链接:https://github.com/keras-team/keras/issues/13004


将tensorflow版本由1.14.0降为1.5.0后,问题解决。

成功生成前端页面。识别效果如下:

总体来说卷积模型识别精确度高于线性模型,个别数字的识别率两种模型准确率都较低,模型还有待改进。

后记

在将本地项目push到GitHub远程仓库时出现报错:

hint: Updates were rejected because the tip of your current branch is
behind hint: its remote counte

报错原因是:新建远程仓库时,选择新建了README.md文件,但是本地代码初次提交时无该文件,提交时,git认为两者是完全不相干的分支。
解决方案一:

git push -f -u origin master

强推至远程服务器。(强制删除远程仓库中冲突代码,即删除创建的README.md文件,不推荐。)

解决方案二:

git pull origin master --allow-unrelated-histories

此种方式表示可将两个完全不相干的分支合并,出现上述问题时,可通过此种方式解决。

本项目部分参考代码:

https://github.com/hanzhenyu2018/mnist_testdemo

TensorFlow与Flask结合打造手写体数字识别相关推荐

  1. Tensorflow与Flask结合打造手写体数字识别项目(MNIST数据集)

    代码见:https://github.com/skyerhxx/Tensorflow-Flask 开发环境 Python:3.7 Tensorflow: 1.13.1 cuda 10.1 Flask: ...

  2. Tensorflow 改进的MNIST手写体数字识别

    上篇简单的Tensorflow解决MNIST手写体数字识别可扩展性并不好.例如计算前向传播的函数需要将所有的变量都传入,当神经网络的结构变得复杂.参数更多时,程序的可读性变得非常差.而且这种方式会导致 ...

  3. Tensorflow解决MNIST手写体数字识别

    这里给出的代码是来自<Tensorflow实战Google深度学习框架>,以供参考和学习. 首先这个示例应用了几个基本的方法: 使用随机梯度下降(batch) 使用Relu激活函数去线性化 ...

  4. 基于MNIST手写体数字识别--含可直接使用代码【Python+Tensorflow+CNN+Keras】

    基于MNIST手写体数字识别--[Python+Tensorflow+CNN+Keras] 1.任务 2.数据集分析 2.1 数据集总体分析 2.2 单个图片样本可视化 3. 数据处理 4. 搭建神经 ...

  5. 基于TensorFlow的手写体数字识别

    目录 一.MNIST数据集介绍 二.原理 2.1.卷积神经网络简介( convolutional neural network 简称CNN) 2.1.1卷积运算过程 2.1.2滑动的步长 2.1.3卷 ...

  6. 如何从TensorFlow的mnist数据集导出手写体数字图片

    在TensorFlow的官方入门课程中,多次用到mnist数据集. mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-ubyte的二 ...

  7. keras框架下的深度学习(一)手写体数字识别

    文章目录 前言 一.keras的介绍及其操作使用 二.手写题数字识别 1.介绍 2.对数据的预处理 3.搭建网络框架 4.编译 5.循环训练 6.测试训练的网络模 7.总代码 三.附:梯度下降算法 1 ...

  8. bp神经网络_BP 神经网络驱动的手写体数字识别软件 EasyOCR

    EasyOCR 项目介绍 本软件是一个手写体数字识别软件,采用BP神经网络,基于colt数学库,有完整源码,可以保存训练结果,基于开源例程neuralnetwork-sample,原作可以在GitHu ...

  9. TensorFlow 2.0 mnist手写数字识别(CNN卷积神经网络)

    TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) 源代码/数据集已上传到 Github - tensorflow-tutorial-samples 大白话讲解卷积 ...

最新文章

  1. 历届华人 AAAI Fellows
  2. LCD12864示例子程序
  3. java rabbitmq 工具类_RabbitMq通用管理工具类
  4. 洛谷UVA1328,POJ1961-Period【KMP,字符串】
  5. 流媒体技术的国内外动态
  6. C语言 文件读写 fputs 函数 - C语言零基础入门教程
  7. centos7配置br0_Docker CentOS7 修改网络配置与宿主机桥接
  8. 真正厉害的产品经理,都是“数据思维”的高手
  9. S5PV210启动过程
  10. idea 自动导包_idea万能快捷键,你不知道的17个实用技巧!!!
  11. 2019-0405视觉SLAM的学习第三讲02
  12. 实对称矩阵的特征值求法_矩阵论系列——特征值篇
  13. python使用redis_python redis使用菜鸟教程
  14. 从零开始学android
  15. 我的五年百度博客文章列表(带链接版)
  16. 【Windows】treamview完全卸载
  17. 什么是CDA数据分析师认证考试?
  18. 华为防火墙查看日志命令_华为USG防火墙运维命令大全
  19. 【CSS】美化网页元素+盒子模型
  20. 格力成立子公司造芯片 亲自挂帅的董明珠能成功吗

热门文章

  1. Vegas 使用教程(三)视频比例和素材去黑边
  2. php7mysqlpdf下载_PHP和MySQL Web开发(原书第4版)
  3. Asp.net 文章资料整理
  4. 持续领先,九州云位列中国边缘云解决方案市场TOP2
  5. 一个迷失的IT工作者
  6. 一张水卡的数据解析及利用
  7. 华为荣耀599元新机:5寸720p屏+四核
  8. Java、JSP音像租赁管理系统
  9. resultMap中的association使用
  10. Lesson10 Hadoop 完全分布式 群启动集群、集群的基本测试 及 集群的停止