TensorFlow与Flask结合打造手写体数字识别
此篇博客记录一下使用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
tonp.floating
is deprecated. In future, it will be treated
asnp.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结合打造手写体数字识别相关推荐
- Tensorflow与Flask结合打造手写体数字识别项目(MNIST数据集)
代码见:https://github.com/skyerhxx/Tensorflow-Flask 开发环境 Python:3.7 Tensorflow: 1.13.1 cuda 10.1 Flask: ...
- Tensorflow 改进的MNIST手写体数字识别
上篇简单的Tensorflow解决MNIST手写体数字识别可扩展性并不好.例如计算前向传播的函数需要将所有的变量都传入,当神经网络的结构变得复杂.参数更多时,程序的可读性变得非常差.而且这种方式会导致 ...
- Tensorflow解决MNIST手写体数字识别
这里给出的代码是来自<Tensorflow实战Google深度学习框架>,以供参考和学习. 首先这个示例应用了几个基本的方法: 使用随机梯度下降(batch) 使用Relu激活函数去线性化 ...
- 基于MNIST手写体数字识别--含可直接使用代码【Python+Tensorflow+CNN+Keras】
基于MNIST手写体数字识别--[Python+Tensorflow+CNN+Keras] 1.任务 2.数据集分析 2.1 数据集总体分析 2.2 单个图片样本可视化 3. 数据处理 4. 搭建神经 ...
- 基于TensorFlow的手写体数字识别
目录 一.MNIST数据集介绍 二.原理 2.1.卷积神经网络简介( convolutional neural network 简称CNN) 2.1.1卷积运算过程 2.1.2滑动的步长 2.1.3卷 ...
- 如何从TensorFlow的mnist数据集导出手写体数字图片
在TensorFlow的官方入门课程中,多次用到mnist数据集. mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-ubyte的二 ...
- keras框架下的深度学习(一)手写体数字识别
文章目录 前言 一.keras的介绍及其操作使用 二.手写题数字识别 1.介绍 2.对数据的预处理 3.搭建网络框架 4.编译 5.循环训练 6.测试训练的网络模 7.总代码 三.附:梯度下降算法 1 ...
- bp神经网络_BP 神经网络驱动的手写体数字识别软件 EasyOCR
EasyOCR 项目介绍 本软件是一个手写体数字识别软件,采用BP神经网络,基于colt数学库,有完整源码,可以保存训练结果,基于开源例程neuralnetwork-sample,原作可以在GitHu ...
- TensorFlow 2.0 mnist手写数字识别(CNN卷积神经网络)
TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) 源代码/数据集已上传到 Github - tensorflow-tutorial-samples 大白话讲解卷积 ...
最新文章
- 历届华人 AAAI Fellows
- LCD12864示例子程序
- java rabbitmq 工具类_RabbitMq通用管理工具类
- 洛谷UVA1328,POJ1961-Period【KMP,字符串】
- 流媒体技术的国内外动态
- C语言 文件读写 fputs 函数 - C语言零基础入门教程
- centos7配置br0_Docker CentOS7 修改网络配置与宿主机桥接
- 真正厉害的产品经理,都是“数据思维”的高手
- S5PV210启动过程
- idea 自动导包_idea万能快捷键,你不知道的17个实用技巧!!!
- 2019-0405视觉SLAM的学习第三讲02
- 实对称矩阵的特征值求法_矩阵论系列——特征值篇
- python使用redis_python redis使用菜鸟教程
- 从零开始学android
- 我的五年百度博客文章列表(带链接版)
- 【Windows】treamview完全卸载
- 什么是CDA数据分析师认证考试?
- 华为防火墙查看日志命令_华为USG防火墙运维命令大全
- 【CSS】美化网页元素+盒子模型
- 格力成立子公司造芯片 亲自挂帅的董明珠能成功吗