【自学】手写数字识别的深入学习

0前言       

         2021.11.17-11.19我花了挺多时间在手写数字识别项目上进行了研究,看了b站视频、看了大量博客、问了前辈,感觉收获还挺多,对于一些专业名词的理解包括整个神经网络搭建也不再那么似懂非懂,反正就是有一丢丢头目了。其实在今年暑期我就接触过这个手写数字识别项目了,但是没有进行很透彻的理解,导致后期对它的印象其实是很模糊的。But!!!今时不同往日啦!所以嘞我下面就对这三天学习的知识进行小小的归纳!(其中包括一些博主的归纳我也进行简述了)

        首先了解一些基础知识吧,比如单通道图和三通道图(目前见得最广泛)。对于MINIST数据集,其中的图片都是单通道图,也叫灰度图,每个像素点只能有一个值表示颜色,该值就是指像素值,范围在0~255之间,0是黑色,255是白色,中间值是一些不同等级的灰色(也有3通道的灰度图,3通道灰度图的3个通道的值都一样)。三通道图(即常说的R、G、B三个通道),每个像素点都有3个值表示 ,即每一个点由三个值表示。其他关于图片的解释可以参考这篇博客:图片一:单通道、三通道、灰度图、黑白图、三通道转灰度图(单通道)_stay_zezo的博客-CSDN博客https://blog.csdn.net/stay_zezo/article/details/114483000?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163732423816780271963883%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163732423816780271963883&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-114483000.pc_search_mgc_flag&utm_term=%E4%B8%BA%E4%BB%80%E4%B9%88%E7%81%B0%E5%BA%A6%E5%9B%BE%E5%83%8F%E6%98%AF%E5%8D%95%E9%80%9A%E9%81%93&spm=1018.2226.3001.4187

        b站学习——手写讲解:大白话讲AI——02手写数字识别(MNIST):机器学习初体验

         以下截屏是视频中我认为最核心的讲解内容,包含了很多需要学习的知识。 

         以下是我学习视频内容整理的Goodnotes笔记:         

        h1、h2、out都只是经过线性变换得到的(即通过线性函数计算),所以为了保证函数对数据描述的准确性,需要用到激活函数,将函数图像更加贴合数据,如下图的第二幅函数图像(图一图二分别表示欠拟合和过拟合情形,这俩都需要避免)

       

        图中蓝②的输出先不要管他那些数据值,直接看蓝③。②到③其实进行了归一化(即用到了softmax函数),得到10个范围是0~1的数据,那么这些数据可以看作这个位置是“1”的概率,其实这有一种多分类的意味啦。这个“位置”和 “1"分别指的是什么呢?其实可以这么理解:有一个长度为10的数组,其数组元素下标则为0~9,即“位置”0~9,而这个数组中的每个元素的值比较特殊,取值只能为1或0(如[0]==0、[1]==1、[2]==0等),所以前面说的“1”就是数组元素的值为“1"的意思。还有更特殊的是,这10个元素只能有一个是”1",其余全部为0,所以这里就引入了一个独热编码的概念,“独”即只能一个的意思,“热”即“1”。对于0~9独热编码情况如下图所示(没有全部都写出来,其中红色字体为下标):

这里我有必要感叹一句现代计算机技术的强大,竟然能够将一张图片缩小到只有10个数字!!!

        回过头来讨论独热编码前的话题,即为什么需要归一化为概率呢?这是因为我们的训练集图片的标签(如“8”、“9”)进行了独热编码,也就是现在的标签也由十个数字组成(如图中的蓝④),那么接下来就可以对处理得到的十个概率与标签的十个数字的对应位置进行Loss计算(如[0]_image与[0]_label之间进行loss计算,[1]_image与[1]_label之间进行Loss计算),再将十个loss结果求和,那么这个和的结果就是loss函数的结果。当某个位置的概率越接近1,loss计算的时候结果越接近0,也就说明预测结果越接近实际结果,也就说明该模型越成功。

        接着就如前面笔记图片展示的那样进行梯度下降计算、更新参数、回到神经网络获得新模型......如此循环往复,知道得到最小(最优)的loss值。

        至于怎么个梯度下降、更新参数就可以看我前面的两篇博客。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
自学CNN图像识别实战不仅可以提升自身的技术能力,还有助于理解深度学习的原理和应用。下面是一些步骤与方法,帮助您开展这项实战学习: 1. 学习基础知识:首先,需要掌握机器学习和深度学习的基础知识,包括神经网络结构和CNN的原理、损失函数、优化算法等。 2. 学习Python编程:学习Python编程语言,以及常用的相关库,例如NumPy和Pandas。这些库可以帮助您进行数据处理和预处理。 3. 学习深度学习库:选择一个流行的深度学习库,例如TensorFlow或PyTorch,并学习其基本使用方法。这些库提供了丰富的功能,可用于构建和训练CNN模型。 4. 数据集准备:选择一个适当的图像数据集,例如CIFAR-10或MNIST。这些数据集通常包含了各种类别的图像,可以用于训练和测试CNN模型。 5. 构建CNN模型:通过深度学习库构建CNN模型。一般来说,CNN模型包括卷积层、池化层和全连接层等,您可以根据需要调整各层的参数和结构。 6. 数据预处理:对图像数据进行预处理,包括图像大小调整、归一化处理和数据增强等。这些操作可以提高CNN模型的训练效果。 7. 训练和评估模型:利用训练数据对CNN模型进行训练,然后使用测试数据对模型进行评估。可以根据需要调整模型结构和超参数,以提高模型的准确度。 8. 模型优化:根据评估结果对模型进行优化,例如调整学习率、增加正则化项等。这些操作有助于提高模型的泛化能力和鲁棒性。 9. 进一步学习和实践:深度学习是一个不断发展的领域,继续学习最新的研究成果和技术进展,参与相关的实践项目,可以不断提高自己的实战能力。 通过这些步骤和方法,您可以自学CNN图像识别实战,提升自身的技术水平,并且在实践中深入理解CNN模型的工作原理和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wxy.Wd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值