cheese酸奶
上一篇文章中的LeNet-5是第一个广为人知的经典CNN网络,但那是20年前提出的CNN网络,最成功的案例是解决了手写数字识别的问题,当时被广泛应用于邮局/银行的手写邮编/支票数字自动识别系统。但直到2012年之前,在这14年间,CNN网络在图像识别领域的地位逐渐被其他分类模型如SVM取代。其中主要的原因有(事后诸葛亮......):
经过十几年的发展,以上制约CNN网络发展的主要限制因素一个个被解决,结果在2012年的ImageNet竞赛中,继LeNet-5之后的第二个经典CNN网络—AlexNet横空出世。以超出第二名10%以上的top-5准确率,勇夺ImageNet2012分类比赛的冠军,从此, 深度学习 重新回到人们的视野,并一发不可收拾。
下面从一些直观的数据比较1998年的LeNet-5和2012年的AlexNet的区别:
AlexNet网络结构如下图所示:
论文中由于使用了2块GPU,将网络结构布置成了上下两部分,看着很不方便,上图是在网上找的简易版本。
下面总结AlexNet的主要特点:
. 使引入Relu激活函数减轻深度网络难以训练的问题
关于CNN网络的激活函数的讨论,SigAI公众号这篇文章总结的挺好:
另外,下面这篇论文对深度网络难以训练的问题进行了分析:
之前的CNN网络,包括前面著名的LeNet-5,都使用tanh/Sigmoid作为激活函数,这类激活函数具有饱和性,在训练深层网络时会造成梯度消失问题,而AlexNet引入了非饱和的Relu激活函数,有效地缓解了梯度消失问题。
. 解决深度网络的过拟合问题
一方面,近几年来,人们越来越意识到构建庞大的数据集的重要性,于是出现了像ImageNet这样超过1500万张标注图片,2200多种类别的数据集,ILSVRC2012中,AlexNet使用了150万张图片的庞大训练集,使得拥有6000万个参数的AlexNet也没出现严重过拟合问题;
另外,AlexNet在训练时使用了数据增强(data augmentation)策略,相当于进一步扩大了训练数据集;
最后,AlexNet在全连接层部分引入了一个dropout层,同样能有效防止模型出现过拟合。
. 计算能力问题
尽管AlexNet的模型复杂度很大,但其利用了英伟达GPU强大的计算能力,在GPU面前,模型复杂度不是问题。
从模型的设计思路来看,其实AlexNet遵循了LeNet-5的思想,即使用交替的卷积层和池化层用于提取图像的高级语义特征,同时降低特征尺寸。然后使用全连接层/MLP作为分类层。
但是,在细节部分,ALexNet引入了很多新的元素,用于解决以上提到的CNN网络遇到的诸多问题,使得CNN网络开始重新散发光芒。
淘淘7011
#include""intmain(){longnum;inti=1;printf("请输入数字:");scanf("%d",&num);while(num/10>0){num=num/10;i++;}printf("%d",i);return0;}你要的是种计算数字长度的吗?如果不是,给我百度里发消息。
雾都下的吃货
前沿
人工智能的浪潮已经席卷全球,深度学习(Deep Learning)和人工智能(Artificial Intelligence, AI)等词汇也不断地充斥在我们身边。人工智能的发展是一个三起两落的变化,90年代期间,知识推理>神经网络>机器学习;2005年左右,机器学习>知识(语义网)>神经网络;而从2017年之后,基于深度学习的神经网络>知识(知识图谱)>机器学习。
卷积神经网络(convolutional neural network, CNN)作为深度学习中的代表,最早的灵感是来源于1961年Hubel和Wiesel两位神经生物学家,在对猫视觉皮层细胞的实验中,发现大脑可视皮层是分层的(CNN中的分层网络结构与其如出一辙)。深度学习作为机器学习(ML)的一个子领域,由于计算机能力的提高和大量数据的可用性,得到了戏剧性的复苏。但是,深度学习是否能等同或代表人工智能,这一点笔者认为有待商榷,深度学习可以认为是目前人工智能发展阶段的重要技术。由于本文主要撰写关于深度学习的入门实战,关于细节概念不做深入研究,下面笔者从实际案例,介绍深度学习处理图像的大致流程。
目录:
以手写识别数字为例,作为深度学习的入门项目,本文以Keras深度学习库为基础。其中使用的tensorflow等模块需要提前配置好,同时注意模型,图片保存、载入的文件路径问题。在自己的计算机上运行时,需要创建或修改。下面的流程包括:使用Keras载入MNIST数据集,构建Lenet训练网络模型,使用Keras进行模型的保存、载入,使用Keras实现对手写数字数据集的训练和预测,最后画出误差迭代图。
手写数字数据集介绍:
手写数字识别几乎是深度学习的入门数据集了。在keras中内置了MNIST数据集,其中测试集包含60000条数据,验证集包含10000条数据,为单通道的灰度图片,每张图片的像素大小为28 28.一共包含10个类别,为数字0到9。
导入相关模块:
载入MNIST数据集
Keras可实现多种神经网络模型,并可以加载多种数据集来评价模型的效果,下面我们使用代码自动加载MNIST数据集。
显示MNIST训练数据集中的前面6张图片:
数据的预处理
首先,将数据转换为4维向量[samples][width][height][pixels],以便于后面模型的输入
为了使模型训练效果更好,通常需要对图像进行归一化处理
最后,原始MNIST数据集的数据标签是0-9,通常要将其表示成one-hot向量。如训练数据标签为1,则将其转化为向量[0,1,0,0,0,0,0,0,0,0]
模型的建立与计算
训练模型的参数设置:
本文使用Lenet网络架构,下面定义Lenet网络结构,若要更改网络结构,如用VGGNet,GoogleNet,Inception,ResNets或自己构建不同的网络结构,可以直接在这一块函数内进行修改。
再附上两个经典的模型:
VGG16:
GoogleNet:
设置优化方法,loss函数,并编译模型:
本文使用生成器以节约内存:
结果分析
作出训练阶段的损失、精确度迭代图,本文将epoch设置为10,已达到的准确率(代码、图像如下所示)。
公众号:帕帕 科技 喵
欢迎关注与讨论~
领域自适应: 多用于文本分类,属于直推式迁移学习,直推式迁移学习定义:给定一个源域和相应的学习任务,一个目标域和相应的学习任务,直推式学习旨在利用源域和目标域中
红桃小K子 4人参与回答 2023-12-05 领域自适应: 多用于文本分类,属于直推式迁移学习,直推式迁移学习定义:给定一个源域和相应的学习任务,一个目标域和相应的学习任务,直推式学习旨在利用源域和目标域中
Romy莎莎mei 5人参与回答 2023-12-07 在投稿系统里找找,可能是以附件形式直接上传在系统里了。或者直接联系一下编辑∞
PolarBella 6人参与回答 2023-12-08 基于matlab的图像识别研究的专业论文
宝宝的口红 8人参与回答 2023-12-12 我曾经在MATLAB平台上用神经网络实现十个手写数字的识别,每个数字提供了四十个左右训练样本,最后得到的网络效果很好,只要不是刻意过度畸形的写法,都能识别出来,
可不娇气 4人参与回答 2023-12-12