手写数字识别c语言作业,10 行代码,实现手写数字识别

本文介绍了如何使用C语言从零开始,不依赖任何第三方库,实现手写数字识别。通过理解神经网络回归算法,利用MNIST数据集训练模型,最终达到91.1%的测试正确率。文章还探讨了模型优化和选择SPL语言的原因,强调其在数学计算上的优势。
摘要由CSDN通过智能技术生成

识别手写的阿拉伯数字,对于人类来说十分简单,但是对于程序来说还是有些复杂的。

ac91bddbddc43bc3d4ae7ac2db4d9eab.png

不过随着机器学习技术的普及,使用10几行代码,实现一个能够识别手写数字的程序,并不是一件难事。这是因为有太多的机器学习模型可以拿来直接用,比如tensorflow、caffe,在python下都有现成的安装包,写一个识别数字的程序,10几行代码足够了。

然而我想做的,是不借助任何第三方的库,从零开始,完全自己实现一个这样的程序。之所以这么做,是因为自己动手实现,才能深入了解机器学习的原理。

1 模型实现

1.1 原理

熟悉神经网络回归算法的,可以略过这一节了。

学习了一些基本概念,决定使用回归算法。首先下载了著名的MNIST数据集,这个数据集有60000个训练样本,和10000个测试样本。每个数字图片都是28*28的灰度图片,所以输入可以认为是一个28*28的矩阵,也可以认为是一个28*28=784个像素值。

这里定义一个模型用于判断一个图片数字,每个模型包括每个输入的权重,加一个截距,最后再做个归一。模型的表达式:

Out5= sigmoid(X0*W0+ X1*W1+……X783*W783+bias)

X0到X783是784个输入,W0到W783是784个权重&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值