43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
陈旸
该思维导图由 AI 生成,仅供参考
通过上节课的讲解,我们已经对神经网络和深度学习有了基本的了解。这节课我就用 Keras 这个深度学习框架做一个识别手写数字的练习。
你也许还有印象,在 KNN 算法那节中,我讲到过 Mnist 手写数字识别这个数据集,当时我们采用的是 mini 版的手写数字数据集。实际上完整版的 Mnist 一共有 60000 个训练样本和 10000 个测试样本,这么庞大的数据量更适合用深度学习框架完成训练。
今天的学习目标主要有以下的几个方面:
进一步了解 CNN 网络。CNN 网络在深度学习网络中应用很广,很多网络都是基于 CNN 网络构建的,你有必要进一步了解 CNN 的网络层次,尤其是关于卷积的原理。
初步了解 LeNet 和 AlexNet。它们都是经典的 CNN 网络,我们今天的任务就是认识这些经典的 CNN 网络,这样在接触更深度的 CNN 网络的时候,比如 VGG、GoogleNet 和 ResNet 这些网络的时候,就会更容易理解和使用。
对常用的深度学习框架进行对比,包括 Tensorflow、Keras、Caffe、PyTorch、 MXnet 和 Theano。当选择深度学习框架的时候到底该选择哪个?
使用 Keras 这个深度学习框架编写代码,完成第一个深度学习任务,也就是 Mnist 手写数字识别。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何使用Keras搭建深度学习网络进行手写数字识别。文章首先介绍了CNN网络的结构,包括卷积层、池化层和全连接层的作用,以及激活函数的作用和池化层的降维处理。接着详细解释了卷积操作的原理和代码实现,以及卷积操作对图像进行特征提取的作用。然后介绍了LeNet和AlexNet这两个经典的CNN网络结构,以及它们的参数特征和网络模型。最后,文章提到了其他深度模型如VGG、GoogleNet和ResNet的结构方式改进。通过本文,读者可以快速了解CNN网络的原理和应用,以及使用Keras进行深度学习任务的基本步骤。文章还介绍了Keras的安装和基本使用方法,以及使用Keras对手写数字进行识别的具体代码实现。通过对LeNet模型的训练和评估,读者可以了解如何使用Keras构建深度学习模型,并对模型进行训练和预测。整体而言,本文为读者提供了一个全面的入门指南,帮助他们快速掌握使用Keras进行深度学习任务的基本知识和技能。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》,新⼈⾸单¥59
《数据分析实战 45 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(21)
- 最新
- 精选
- third卷积是一种操作,就像是过滤这个动作。 卷积核是卷积的一层滤网, 多个卷积核形成一个卷积层 卷积层像一个过滤层,过滤掉不需要的杂质
作者回复: 对的
2019-03-2211 - JustDoDT在python中,要使用OpenCV,要安装cv的package。在python代码中,看到import cv2。但pip install 的名称不是cv2、或者Opencv,而是opencv-python. 执行: pip install opencv-python
作者回复: 是的,在Python第三方库的仓库https://pypi.org/中,OpenCV的安装包名称为opencv-python,调用时,名称是cv2
2020-04-2510 - 滨滨1、卷积是矩阵运算。图像中不同数据窗口的数据和卷积核(一个滤波矩阵)作内积的操作叫做卷积。 2、卷积核就是图像处理时,给定输入图像,在输出图像中每一个像素是输入图像中一个小区域中像素的加权平均,其中权值由一个函数定义,这个函数称为卷积核。 3、卷积层:多个滤波器叠加便成了卷积层。
作者回复: 整理总结不错
2019-05-025 - 浩然至于为什么要翻转,举个例子,假如图像是这样: 0 0 0 1 0 ;卷积核是这样: 1 2 3,如果不翻转,结果就是 0 3 2 1 0,发现结果是反的。如果卷积核翻转成 3 2 1 ,那么结果就是 0 1 2 3 0 ,是正的。
作者回复: 对的
2019-04-194 - 林讲的真好,希望老师也能出深度学习的课程
作者回复: 谢谢林,深度这个变化太快了
2019-04-014 - 厚积薄发深度学习手写体数字识别 1.卷积,卷积核,卷积层的理解 卷积:是一种特殊的内积操作,先对卷积核进行180度的旋转,然后从第一个像素点依次与卷积核做内积操作。 卷积核:对图像做卷积操作的权重参数 卷积层:一个或多个卷积组成的过滤网 卷积的作用:提取特征,内积操作,把数据映射到线性空间。 激活函数的作用:把线性空间映射到非线性空间,让神经网络具有更强的表达能力 池化层的作用:对神经元的数据进行降维,降低的计算量 全连接层的作用:前一层的输出结果与当前神经元全部进行相连,做最后一层的分类任务,比如softmax
作者回复: 总结的不错,继续坚持
2020-11-182 - Lisa老师,配置每个层的时候填的数字有什么一般规律或范围吗?比如全连接层为什么填120呢?为什么填84呢? model.add(Dense(120, activation='relu')) model.add(Dense(84, activation='relu'))
作者回复: 这个是LeNet-5的模型,3个全连接层的输出维度分别是120,84,10。都是确定好的,直接使用就好了
2019-09-0622 - 滨滨CNN 网络结构中每一层的作用:它通过卷积层提取特征,通过激活函数让结果映射到非线性空间,增强了结果的表达能力,再通过池化层压缩特征图,降低了网络复杂度,最后通过全连接层归一化,然后连接 Softmax 分类器进行计算每个类别的概率。
作者回复: Good Sharing
2019-05-022 - 滢个人对于卷积、卷积核、卷积层的理解是: 卷积是一种做内积运算的操作; 卷积核就是要做内积运算的规则; 卷积层是融合了一个或多个卷积核(即多个运算规则)的过滤网络
作者回复: 对的 理解的很好
2019-04-272 - 王彬成参考链接:https://www.cnblogs.com/readingintheway/p/4977669.html 卷积核为何要翻转才能计算的原因: 所谓的翻转只是因为你站立的现在是过去的未来,而因为h(t)始终不变,故h(1)其实是前一秒的h(1),而前一秒的h(1)就是现在,所以从当前x(4)的角度往左看,你看到的是过去的作用。h(t)未翻转前,当从h(0)往右看,你看到的是现在对于未来的影响,当翻转h(t)之后,从h(0)往左看,你依次看到的越来越远的过去对现在的影响,而这个影响,与从x=4向左看的作用影响相对应(都是越来越远的过去),作用与作用的响应就对应起来了,这一切的本质,是因为你站立的时间观察点和方向在变。
作者回复: 多谢分享
2019-03-222
收起评论