送源码!人工智能实现:识别图片中的手写数字,值得收藏

人工智能
后台-插件-广告管理-内容页头部广告(手机)
送源码!人工智能实现:识别图片中的手写数字,值得收藏

作者|小林同学

关注《高手杰瑞》,每天有不一样的实用小教程发布哦!


哈喽,大家好我是杰瑞。今天我给大家带来一个用机器学习的方法来实现手写数字识别的教程,就像C语言中输出的那一行“Hellow World”一样,这个教程也是入门图像识别中需要学会的第一个技能,我们将会使用tensorflow深度学习框架来实现手写数字识别,在观看此教程之前你需具备以下基础:

  • python基本语法
  • 神经网络基础知识
  • tensorflow框架的基本使用
  • 线性代数基本知识

如果你不具备以上基础怎么办?别急,你可以关注《编程高手杰瑞》,因为杰瑞会每天更新以上知识点的文章!

送源码!人工智能实现:识别图片中的手写数字,值得收藏

教程开始

▲tensorflow框架安装

首先我们需要用到tensorflow框架,这个杰瑞默认你们已经安装好了,如果你还没有安装,那么下面这篇文章里面就有安装方法。「人工智能」深度学习代码教程:简单线性回归拟合,送源码!

因为我们在这里使用的是tensorflow框架,所以就没有必要去自行下载手写数字数据集了,直接使用tensorflow中的mnist模块就可以自动下载测试集和训练集。以下代码为下载数据集的代码:

送源码!人工智能实现:识别图片中的手写数字,值得收藏 送源码!人工智能实现:识别图片中的手写数字,值得收藏

第一个参数是存放数据集的文件夹

▲网络结构设计

杰瑞先教大家一个简单的网络结构,暂时不考虑卷积层、池化层、激活函数等因素,在这个网络中只有一层全连接层,如果想看如何使用卷积神经网络实现手写数字识别的同学,可以关注下一篇即将发布的文章。

原理

在本例的手写数字识别模型中,我们的输入是多个批次大小为28*28的灰度图,将灰度图中的像素值与权重值相乘,然后再加上一个偏执量就可以得到一个输出,最后利用输出和实际值进行一个交叉熵计算,我们就可以得到误差值,这个误差值可以作为更新权重的参照,不断地迭代计算上面步骤我们就可能得到一个最优的权重值和偏执量,这两个参数就是这个网络所学习到的参数,可以用来预测图片中的手写数字是哪个数字。

送源码!人工智能实现:识别图片中的手写数字,值得收藏

▲代码

送源码!人工智能实现:识别图片中的手写数字,值得收藏

上图的代码构建了一个全连接层,并使用tf.nn.softmax_cross_entropy_with_logits()方法计算交叉熵,最后用梯度下降法减小损失值。

最后我们开启会话进行训练,杰瑞在这里训练了2000步,准确率为96%。

送源码!人工智能实现:识别图片中的手写数字,值得收藏

以下为训练结果:

送源码!人工智能实现:识别图片中的手写数字,值得收藏

手写数字预测

我们使用下载好的测试集进行预测,以下是预测结果:

送源码!人工智能实现:识别图片中的手写数字,值得收藏

完整代码

杰瑞使用的环境如下:

python3.6

tensorflow1.14.0

win10

送源码!人工智能实现:识别图片中的手写数字,值得收藏 送源码!人工智能实现:识别图片中的手写数字,值得收藏 送源码!人工智能实现:识别图片中的手写数字,值得收藏

如果喜欢本篇文章就请:点赞、关注、转发

后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。