精华内容
下载资源
问答
  • 为什么要引入神经网络来做识别,判断,预测?为什么神经网络能做这事?其实我们生活中,总不知不觉的经常用神经网络。只不过我们没注意观察罢了。 比如经常有朋友会问我们,哪里的房子大致多少钱?比如下面这个...

    马克-to-win @ 马克java社区:实名手机尾号:73203, 很多人学了神经网络很长时间,但一直就有一个最根本的问题困扰着自己。为什么要引入神经网络来做识别,判断,预测?为什么神经网络能做这事?其实我们在生活中,总在不知不觉的经常用神经网络。只不过我们没注意观察罢了。 比如经常有朋友会问我们,哪里的房子大致多少钱?比如下面这个判断房价的例子,当知道地点在北京二环以里,天安门旁边的东华门,输入x1就应该等于五万元一平米。楼层是四层,不高不低,X2等于800元一平米。楼层如果是顶层,那就太高了,x2就等于100元一平米。马克-to-win @ 马克java社区:当知道朝向是朝阳以后,X3等于1000元一平米。如果知道朝向是朝北以后,S3就等于100元一平米。但x1,x2,x3,这三个参数在你心目中的权重是完全不一样的,大家都知道,判断房价,地点是最重要的,所以,权重w1的值会高很多,比如说0.6。而楼层的权重就不是那么高,比如只占0.1。向南朝向权重占0.2。基础偏移跟整个的时代都很有关系,大家都是买涨不买跌,所以当大家都想买房的时候,这个偏移就会很高,比如b等于一万元一平米。马克-to-win @ 马克java社区:所以按照下图:最终输出:x1*w1+x2*w2+x3*w3+b=50000*0.6+800*0.1+1000*0.2+10000=40280元一平米, 为价格。

    更多请见:https://blog.csdn.net/qq_43650923/article/details/102588504

    展开全文
  • 为什么要做掌纹识别

    千次阅读 2020-05-28 10:56:26
    前几天听了学校的一场博士论文答辩,其中一个师兄是用GAN网络做多模态掌纹建模,老师提问的时候就问到了为什么要做掌纹识别,毕竟像现在的指纹识别,虹膜识别已经比较成熟了。其实自己一直也对这个问题比较好奇,...

    前几天听了学校的一场博士论文答辩,其中一个师兄是用GAN网络做多模态掌纹建模,老师提问的时候就问到了为什么要做掌纹识别,毕竟像现在的指纹识别,虹膜识别已经比较成熟了。其实自己一直也对这个问题比较好奇,以前听周杰老师讲座的时候,周杰老师也分享了很多关于掌纹识别的一些工作,然后后面自己就去查了一下掌纹识别的一些资料,在这里总结和大家分享一下,不一定特别准确,只是作为一个参考。

    掌纹识别的定义

    掌纹识别是用掌纹特征(包括人眼可见的或不可见的)来进行身份鉴别的方法 。 其中掌纹特征包括主线 、皱褶 、乳突纹 、细节点和三角点等等
      在这里插入图片描述

    掌纹基本特征

    • 几何特征(geometrical feature):这是反映手掌几何形状的特征 ,如手掌的宽度和长度等 。
    • 主线特征(principal palm-lines):主线是手掌上最强最粗的几条线 。 大多数手掌上有三条主线 ,分别称为生命线 、感情线和智慧线 。
    • 皱褶特征(w rinkles):除了主线外 ,手掌上还有很多皱褶线 ,一般来说这些线要比主线细 、浅 ,并且很不规则 。
    • 细节点特征(minutiae):由于手掌上布满了和指纹一样的乳突纹 ,所以和指纹识别一样 ,在手掌上也可提取这些乳突纹的细节点特征 。
    • 三角点特征(delta points):三角点是乳突纹在手掌上形成的三角区域的中心点 。 这些三角区域位于指根的下面以及中指下方靠近手腕的位置 。
      严格地说 ,在这些特征中 ,几何特征不属于掌纹特征 ,而属于手形特征 ,这种特征简单 ,但唯一性很难满足 ,即具有相同几何特征的手掌较多 ,很难在身份辨识中获得高的识别精度 ;并且手掌的几何特征比较容易通过制作手掌模型的方法来伪造 。三角点和细节点是乳突纹形成的特征 ,只有在高分辨率 、高质量的图像中才能提取出来 。掌纹线(palm-lines) ,包括主线和皱褶 ,可以从较低分辨率 、较低质量的图像中提取出来 ,并且很稳定 ,是掌纹识别中用到的重要特征之一 。以上这些都是掌纹的基本特征 ,由这些基本特征还可以形成很多其他的特征 ,如可以由乳突纹 、皱褶和主线共同形成掌纹纹理特征(textural featu res)等 。

    掌纹识别的步骤

    基本的掌纹识别流程包括: 采集掌纹图像、建立数据库、图像预处理、特征提取和匹配. 主要流程如下图所示. 图像采集过程要求充分仿真实际场景. 预处理过程主要是提取 ROI( Region Of Interest 感兴趣区),常用算法为参考坐标系算法. 特征提取从全局或局部范围提取特征. 匹配过程基于某个预先确定的匹配准则匹配测试样本与其它样本。
    在这里插入图片描述

    掌纹识别的优势

    • 准确度较高,具有主线、皱纹、脊末梢、分叉点等辨识度高的纹理特征;
    • 掌纹图像采集十分便捷,即使手机分辨率较低也可轻易采集(这个其实我觉得有待商榷,需要采集到高质量的掌纹图像对设备的要求还挺高的,像答辩的那个师兄做的其中一个工作就是低质量的掌纹的识别,掌纹好就好在它特征点多,所以高质量的指纹大小的掌纹就可以做好识别);
    • 掌纹识别稳定可靠,掌纹的形态主要由遗传基因控制,即使特殊原因导致表皮剥落,新生的纹路依然保持原有不变的结构. 所以,掌纹特征识别具有纹理特征丰富、用户易于接受、安全稳定性较高等优点
    • 识别速度快,目前,人脸识别、指纹识别等技术加持下的移动支付耗时处在秒级水平,而一些掌纹识别技术则可以在仅仅300毫秒的时间内验证个人身份并完成支付。
    • 相比于传统手部生物识别技术——指纹识别,掌纹识别可以做到不需要使用者将手放在扫描设备上,只需挥手扫描,无需接触。
    • 对于识别正确率而言,掌纹识别对比现在流行的人脸识别也具有相当大的优势。根据报道,这项技术的故障率在0.0001%左右,研究者们正在努力将这一故障率提高至0.000001%。另外,现在流行的指纹识别、人脸识别等生物识别技术,都出现过安全性问题。例如指纹识别可以被指纹膜成功欺骗,未辅以强大活体检测功能的人脸识别系统也可以被3D打印面具欺骗的情况。
    • 就人脸识别技术而言,其应用在国外颇具争议,被认为具有侵犯性。同时,其对于有色人种的人脸识别正确率会大幅降低,因此无法展开大规模应用,旧金山的城市监管会就曾禁止这一技术的使用。但在国内而言,不存在类似的政策和技术问题,因此人脸识别得以获得大规模的应用。在人脸识别大规模顺利应用的情况下,移动支付和安全防范领域并没有引入新型生物识别技术的动机。

    主要应用领域

    • 高端门禁:国家机关、企事业单位、科研机构、高档住宅楼、银行金库、保险柜、枪械库、档案库、核电站、机场、军事基地、保密部门、计算机房等的出入控制。
    • 公安刑侦:流动人口管理、出入境管理、身份证管理、驾驶执照管理、嫌疑犯排查、抓逃、寻找失踪儿童、司法证据等(这个也是师兄在答辩时重点提到的一个,刑侦现场很多只是留下小块的掌纹,比如犯罪嫌疑人握着刀柄)。
    • 医疗社保:献血人员身份确认、社会福利领取人员、劳保人员身份确认等。
    • 网络安全:电子商务、网络访问、电脑登录等。
    • 其它应用:考勤、考试人员身份确认、信息安全等。

    近期美国专利与商标局也公布了亚马逊最新专利申请,一种非接触式扫描系统,可通过扫描手掌特征(包括掌纹和静脉)来识用户身份。目前,亚马逊公司已获得了“非接触式扫描系统”的专利,并将其手掌识别技术代号确定为Orville。同时,该系统已经在美国whole foods商超、Amazon Go便利店进行测试,在进入商店时顾客需要扫描手掌,结束购物时在配备扫描仪的收银机上再次扫描手掌来结账。亚马逊在其试运行的便利店打出了“No Line, Just Walk Out”(无需排队结账)标语。其实也说明了掌纹识别的某一方面的优越性,不然商家是不会将其落地去做的。

    参考文献

    掌纹识别技术Palmprint Recognition书籍 邬向前 张大鹏 王宽全 著
    钟德星,朱劲松,杜学峰.掌纹识别研究进展综述[J].模式识别与人工智能,2019,32(05):436-445.

    展开全文
  • 一直很难学会我不能理解得东西,就比如这个神经网络为什么经过一系列得计算就能进行分类或者是图像识别,人脸识别。今天好像突然开窍了,原来就这啊。。。。 玩色子 应该都接触过摇色子赌大小得游戏,微信表情包...

    神经网络(深度学习)到底是在干什么

    我一直很难学会我不能理解得东西,就比如这个神经网络,为什么经过一系列得计算就能进行分类或者是图像识别,人脸识别。今天好像突然开窍了,原来就这啊。。。。

    玩色子

    应该都接触过摇色子赌大小得游戏,微信表情包就有这个,总共有六个点数,如下:

    在这里插入图片描述
    一般电视剧里用两只碗扣在一块,里面有三个色子,最大是18点,最小是3点,所以这里暂且以11为中位数,大于等于11的为大,小于11的为小,刚好8个大点、8个小点。

    建模型

    神经网络包括三个部分——输入层、隐藏层和输出层。我们建立一个神经网络模型来让机器识别我们摇出来的点数是大还是小。

    先摇三个点。。。
    在这里插入图片描述
    很明显的是1+3+4 = 8 <11,问题是隐藏层 “在这里插入图片描述 ”到底做了什么?该怎么做?

    出结果

    其实这个隐藏层的函数(或者叫矩阵)就是三个值为1的常数函数。
    在这里插入图片描述
    计算方式为点对点相乘然后相加(相当于深度学习里面的全连接层)
    1×1+3×1+4×1 = 8 < 11,然后只需要一个判断函数就可以将“小”作为结果输出。

    同样:

    在这里插入图片描述
    3×1+5×1+6×1 = 14 >11,输出“大”。

    当然了,这个只是一个很简单的分类模型,而且只有两个分类结果。
    一般用于实现数字识别或者图像识别的隐藏层比较复杂,甚至需要很多个隐藏层。分别命名为j卷积层(一个模型中可能会多次使用)、池化层(一个模型中可能会多次使用)、全连接层,还会有对应的激活函数。

    看吧,其实就是一个很简单的模型而已,只是名字唬人罢了。

    突然觉得,有些东西一旦明白了也就没啥意思了。。。
    后面再写写神经网络是怎么训练模型(计算隐藏层的)吧,嗯,可以再写写。。。。

    展开全文
  • ​点击标题下[异步社区]可快速关注本文中,我们将进一步探讨一些使用Python神经网络识别手写字符非常有趣的想法。如果只是想了解神经网络的基本知识,那不必阅读本文,可以先阅读《Python神经网络编程》前面2章节的...

    ​点击标题下[异步社区]可快速关注

    在本文中,我们将进一步探讨一些使用Python神经网络识别手写字符非常有趣的想法。如果只是想了解神经网络的基本知识,那不必阅读本文,可以先阅读《Python神经网络编程》前面2章节的内容。

    这是一个有趣的额外部分,所以节奏会稍微加快一些,但是我们仍然尝试使用简单的语言来解释这些想法。

     1.1 自己的手写数字

    在本文中,我们一直使用来自MNIST数据集的数字图片。为什么不使用自己的笔迹呢?

    在这个实验中,我们将使用自己的笔迹创建测试数据集。我们也将尝试使用不同的书写风格,使用嘈杂或抖动的图片,来观察神经网络的应对能力如何。

    你可以使用任何喜欢的图像编辑或绘画软件来创建图片。不必使用昂贵的Photoshop,GIMP是免费开源的替代软件,适用于Windows、Mac和Linux等系统。甚至可以用一支笔将数字写在纸上,并用智能手机、相机或任何合适的扫描仪,将手写数字变成图片格式。唯一的要求是图片为正方形(宽度等于长度),并且将其保存为PNG格式。在喜欢的图像编辑器中,保存格式选项的菜单通常为“File→Save As”或“File→Export”。

    下面是我制作的一些图片。

    ​数字5就是我的笔迹。数字4是用粉笔而不是马克笔写的。数字3是我的笔迹并有意切成一段一段的。数字2是传统的报纸或书籍字体,但是进行了模糊处理。数字6有意做成抖动的样子,好像是在水中的倒影。最后一张图片与前面的数字相同,但是添加了噪声,来看看我们是否可以增加神经网络的工作难度。

    虽然这很有趣,但是这里蕴含了很严肃的一点。人类大脑在遭受损害后,其能力依然能够得到良好发挥,科学家对此深感震惊。这暗示着,神经网络将它们所学到的知识分布在几条链接权重上,也就是说,如果若干链接权重遭受了一定损害,神经网络也可以表现得相当好。这同时意味着,如果输入图像被损坏或不完整,神经网络也可以表现得相当好。这是一种很强大的功能,这就是我们希望用上图中断断续续的3进行测试的能力。

    我们需要创建较小的PNG图片,将它们调整到28个像素乘以28个像素,这样就可以匹配曾经用过的来自MNIST数据集的图片。你可以使用图像编辑器做到这一点。

    Python库再次帮助了我们,它从常见的图像文件格式中(包括PNG格式)读取和解码数据。看看下面这段简单的代码:​

    ​scipy.misc.imread()函数帮助我们从图像文件,如PNG或JPG文件中,读取数据。必须导入scipy.misc库来使用这个函数。参数“flatten=True”将图像变成简单的浮点数数组,如果图像是彩色的,那么颜色值将被转换为所需要的灰度。

    下一行代码重塑数组,将其从28×28的方块数组变成很长的一串数值,这是我们需要馈送给神经网络的数据。此前,我们已经多次进行这样的操作了。但是,这里比较新鲜的一点是将数组的值减去了255.0。这样做的原因是,常规而言,0指的是黑色,255指的是白色,但是,MNIST数据集使用相反的方式表示,因此不得不将值逆转过来以匹配MNIST数据。

    最后一行代码是我们很熟悉的,它将数据值进行缩放,使得它们的范围变成0.01到1.0。演示读取PNG文件的示例代码可以在GitHub上找到:

    · https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part3_load_own_images.ipynb

    我们需要创建基本的神经网络,这个神经网络使用MNIST训练数据集进行训练,然后,不使用MNIST测试集对网络进行测试,而是使用自己创建的图像数据对网络进行测试。

    在GitHub上,可通过如下链接获得新程序:

    ·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part3_neural_network_mnist_and_own_data.ipynb

    这样做成功了吗?当然成功了。下图总结使用我们自己制作的图像查询的结果。

    ​可以看到,神经网络能够识别我们创建的所有图像,包括有意损坏的数字“3”。只有在识别添加了噪声的数字“6”时失败了。

    使用你自己的图像,尤其是手写的图像试试看,证明你的神经网络确实能够工作。

    并且,仔细观察,要将图像损坏或变形到什么程度,神经网络才会失败。神经网络的弹性将会给你留下深刻的印象。

     1.2 神经网络大脑内部

    在求解各种各样我们不知道如何使用简约明快的规则解决的问题时,神经网络发挥了重要作用。想象一下,写下一组规则,将这些规则应用于手写数字图像,来确定数字是什么,这件事并不是那么容易,并且我们的尝试也可能不会那么成功。

    1.2.1 神秘的黑盒子

    一旦神经网络得到了训练,并且在测试数据上表现良好,那么基本上你就拥有了一个神秘的黑盒子。你不知道这个黑盒子如何计算出答案,但是它确实成功地计算出了答案。

    如果你只对答案感兴趣,而不真正关心它们如何得出这个答案的,那么对你来说,这就不是一个问题了。但是,我要指出这是这些机器学习方法类型的缺点,即虽然黑盒子(神经网络)已经学会如何求解问题,但是其所学习到的知识常常不能转化为对问题的理解和智慧。

    让我们来看看是否可以到神经网络内部一探究竟,是否能够理解神经网络所学习到的知识,将神经网络通过训练搜集到的知识可视化。

    我们可以观察权重,这毕竟是神经网络学习的内容。但是,权重不太可能告诉我们太多信息。特别是,神经网络的工作方式是将学习分布到不同的链接权重中。这种方式使得神经网络对损坏具有了弹性,这就像是生物大脑的运行方式。删除一个节点甚至相当多的节点,都不太可能彻底破坏神经网络良好的工作能力。

    这里有一个疯狂的想法。

    1.2.2 向后查询

    在通常情况下,我们馈送给已受训练的神经网络一个问题,神经网络弹出一个答案。在我们的例子中,这个问题是人类的手写数字图像。答案是表示数字0到9中的某个标签。

    如果将这种方式反转,向后操作,会发生什么呢?如果馈送一个标签到输出节点,通过已受训练的网络反向输入信号,直到输入节点弹出一个图像,那会怎么样?下图显示了正常的正向查询和疯狂的反向向后查询的想法。

    ​我们已经知道如何通过网络传播信号,使用链接权重调节信号,在应用激活函数之前在节点处重新组合信号。除了使用的是逆激活函数以外,所有这一切操作也都适用于反向传播信号。如果y = f(x) 是正向激活函数,那么这个函数的逆就是x = g(y)。使用简单的代数,求出逻辑函数的逆,也并非难事:

    y = 1 / (1 + e-x)

    1 + e-x = 1/y

    e-x = (1/y) -1 = (1 - y) / y

    -= ln [ (1-y) / y ]

    x = ln [ y / (1-y) ]

    这就是所谓的对数函数,就像Python为逻辑S函数提供scipy.special.expit()一样,Python中的scipy.special库也提供了这个函数,即scipy.special.logit()。

    在应用逆激活函数logit()之前,我们需要确保信号是有效的。这是什么意思呢?还记得吧,逻辑S函数接受了任何数值,输出0和1之间的某个值,但是不包括0和1本身。逆函数必须接受相同的范围0和1之间的某个值,不包括0和1,弹出任何正值或负值。为了实现这一目标,我们简单地接受输出层中的所有值,应用logit(),并将它们重新调整到有效范围。我选择的范围为0.01至0.99。

    这段代码在网上始终可用,请访问GitHub以获取:

    ·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part3_neural_network_mnist_backquery.ipynb

    1.2.3 标签“0”

    来看看如果我们使用标签“0”进行反向查询,会发生什么情况。也就是说,我们向输出节点展示了一些值,除了使用值0.99展示给第一个节点表示标签“0”,其余节点都展示了0.01。换句话说,也就是数组[0.99, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01,0.01]。

    下图显示了输入节点弹出的图像。

    ​这真是太有趣了!

    这个图像让我们对神经网络的“大脑”有了一种深刻的见解。这个图像是什么意思?该如何解释这个图像呢?

    我们注意到最主要的特征是,图像中的圆形。我们是在询问神经网络——对于答案“0”,最理想的问题是什么,因此,这个图像是有道理的。

    我们也注意到深色、浅色和一些介中的灰色区域。

    ·深色区域是问题图像中应该使用笔来标记的部分,这部分图像组成了支持证据,证明答案为“0”,可以这样理解,这些部分看起来组成了0的形状轮廓。

    · 浅色区域是问题图像中应该没有任何笔痕的部分,这支持了答案为“0”。同样,可以这样理解,这些部分形成了0形状的中间部分。

    · 大体上,神经网络对灰色区域不是很敏感。

    因此,粗略来讲,我们实际上已经理解了,针对如何将图像归类为标签“0”,神经网络已经学习到的知识。

    这是一种难得的见解,对于较多层、较复杂的神经网络或较复杂的问题而言,可能没有如此容易解释的结果。我们鼓励你进行实验,亲自动手试一试。

    1.2.4 更多的大脑扫描

    下图显示了其他数字向后查询的结果。

    ​哇!同样是一些非常有趣的图像,就像使用超声波扫描神经网络的大脑一样。

    关于这些图像,我们做了一些注解:

    ·“7”真的很清楚。可以看到在查询图像中标记的深色位置,强烈暗示了这是标签“7”。也可以看到额外的“白色”区域,这些区域没有任何标记。这两个特点结合起来,指示出了这是“7”。

    · 这同样适用于数字“3”,有标记的深色区域指示出了“3”,白色的区域也非常清晰。

    ·“2”和“5”具有类似的清晰度。

    · 数字“4”有点有趣,这个形状出现在4个象限中,是4个互相分隔的区域。

    · “8”主要是由“雪人”构成的,这个“雪人”由白色区域形成,表明8的特征在于保持了“头部和身体”区的标记。

    · 数字“1”令人相当费解。这看起来好像神经网络较多关注无需标记的区域,而较少关注需要标记的区域。没关系,这就是网络从样本中学到的知识。

    · 数字“9”一点都不清楚。它有一个明确的深色区域,还有一些形状相对精细的白色区域。这就是神经网络所学习到的知识,总体来说,当与网络学会的其他数字结合时,这允许神经网络的表现达到了97.5%的准确度。我们观察一下这个图片,并得出结论,有更多的培训样本将有助于神经网络学到更清晰的“9”的模板。

    现在,你对神经网络大脑的工作方式应该有了一个深刻的了解了吧。

     1.3 创建新的训练数据:旋转图像

    如果思考一下MNIST训练数据,你就会意识到,这是关于人们所书写数字的一个相当丰富的样本集。这里有各种各样、各种风格的书写,有的写得很好,有的写得很糟。

    神经网络必须尽可能多地学习这些变化类型。在这里,有多种形式的数字“4”,有些被压扁了,有些比较宽,有些进行了旋转,有些顶部是开放的,有些顶部是闭合的,这对神经网络的学习都是有帮助的。

    如果我们能够创造更多的变化类型作为样本,会不会有用处呢?如何做到这一点呢?再多收集几千个人类手写数字样本,对我们来说有点不太容易。我们可以这样做,但是工作量有点大。

    一个很酷的想法就是利用已有的样本,通过顺时针或逆时针旋转它们,比如说旋转10度,创建新的样本。对于每一个训练样本而言,我们能够生成两个额外的样本。我们可以使用不同的旋转角度创建更多的样本,但是,目前,让我们只尝试+10和-10两个角度,看看这种想法能不能成功。

    同样,Python的许多扩展包和程序库都很有用。ndimage.interpolation.rotate()可以将数组转过一个给定的角度,这正是我们所需要的。请记住,由于我们将神经网络设计成为接收一长串输入信号,因此输入的是784长的一串一维数字。我们需要将这一长串数字重新变成28×28的数组,这样就可以旋转这个数组,然后在将这个数组馈送到神经网络之前,将数组解开,重新变成一长串的784个信号。

    假设得到了先前的scaled_input数组,下列代码演示了如何使用ndimage.interpolation.rotate()函数:​

    ​可以看到,原先的scaled_input数组被重新转变为28乘以 28的数组,然后进行了调整。reshape=False,这个参数防止程序库过分“热心”,将图像压扁,使得数组旋转后可以完全适合,而没有剪掉任何部分。在原始图像中,一些数组元素不存在,但是现在这些数组元素进入了视野,cval就是用来填充数组元素的值。由于我们要移动输入值范围,避免0作为神经网络的输入值,因此不使用0.0作为默认值,而是使用0.01作为默认值。

    小型MNIST训练集的记录6(第7条记录)是一个手写数字“1”。在下图中可以看到,原先的数字图片和使用代码生成的两个额外的变化形式。

    ​可以清楚地看到这种方式的好处。原始图像的版本旋转+10度,提供了一个样本,就像某些人的书写风格是将1向后倾斜。将原来图片的版本顺时针旋转10度更有趣。和原始的版本相比,这个版本在某种意义上是更具代表性的学习图片。

    让我们创建新的Python Notebook,使用原来的神经网络代码,不过,现在我们将原始图片朝顺时针和逆时针两个方向旋转10度,作为额外的训练样本,来训练神经网络。这段代码在GitHub上可以得到,请访问以下链接:

    ·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part2_neural_network_mnist_data_with_rotations.ipynb

    设定学习率为0.1,并且只使用一个训练世代,初始运行神经网络,所得的性能是0.9669。这对于没有使用额外旋转图像进行训练的神经网络的性能0.954而言,是一个长足的进步。这样的表现,和列在Yann LeCeun网站中的记录相比也已经是名列前茅了。

    让我们进行一系列的实验,改变世代的数目看看是否能够让已经不错的表现更上一层楼。现在,我们创建了更多的训练数据,可以采用更小、更谨慎的学习步长,因此将学习率减少到0.01,这样就总体上延长了学习时间。

    请记住,由于特定的神经网络架构或训练数据的完整性,事情很可能存在内在的限制,因此我们不会期待得到98%或以上的准确度,或者甚至是100%的准确度。我们说“特定的神经网络架构”,意思是在每一层节点数目的选择、隐藏层的选择和激活函数的选择等。

    我们旋转训练图像的角度,将其作为额外的训练样本,下图显示了在这种情况下的神经网络的性能。同时,下图也显示了没有使用额外旋转的训练样本时神经网络的性能,以便进行简单的比较。

    ​可以看到,在5个世代的情况下,最好的结果是0.9745或97.5%的准确度。这再一次打破了我们先前的纪录。

    值得注意的是,如果旋转的角度过大,神经网络的性能会出现下降。由于旋转较大的角度意味着创建了实际上不能代表数字的图像,因此神经网络的性能出现了下降,这是可以理解的。想象一下,将“3”向一个方向旋转90度,这就不再是3了。因此,将过度旋转的图像添加到训练样本中,增加了错误样本,降低了训练的质量。对于最大化附加数据的价值,10度看起来是最佳角度。

    在10个世代的情况下,神经网络的性能出现了峰值,打破了记录,达到了0.9787,几乎到达98%!对于这种简单的神经网络而言,这是一个惊人的结果,也是最佳的一种状态。请记住,有些人会对神经网络或数据进行一些巧妙的处理,我们还未这样做,我们只是保持简单的神经网络,但是却依然取得了令人骄傲的结果。

    ​做得好!

     1.4 结语

    在本文中,我希望你已经明白,人类能够轻而易举解决的一些问题,对传统计算机而言却难以解决。图像识别就是这些所谓的“人工智能”的挑战之一。

    神经网络使图像识别以及广泛的其他各类难题,都获得了空前的进步求解这类难题的早期动力的一个关键性部分是生物大脑,如鸽子或昆虫的大脑,虽然这些生物大脑比起今天的超级计算机似乎简单一些,反应也较慢,但是它们依然能够执行复杂的任务,如飞行、喂食、建设家园。这些生物大脑对损害或对不完美的信号,也非常有弹性。数字计算机和传统计算却不能拥有这种能力。

    今天,在人工智能中,神经网络是一些神奇的应用程序成功的关键部分。人们对神经网络和机器学习,特别是深度学习——也就是使用了有层次结构的机器学习方法,依然充满了巨大兴趣。在2016年年初,在古老的围棋对弈领域,谷歌的DeepMind击败了世界级大师。和国际象棋相比,围棋需要更深入的战略,更加微妙,研究人员原本以为计算机需要好几年的时间才能下得好围棋。因此,此次事件成为了人工智能史上一个巨大的里程碑。神经网络在计算机的成功中发挥了关键作用。

    我希望你已经明白了,神经网络背后的核心思想其实是非常简单的。我希望你也可以从神经网络的实验中找到乐趣。也许,你已经有了探索其他类型的机器学习和人工智能的兴趣。

    如果你做到了这些事情,那么我就算大功告成了。


    本文摘自《Python神经网络编程》

    ​《Python神经网络编程》

     [英]塔里克·拉希德(Tariq Rashid) 著 

    点击封面购买纸书


    当前,深度学习和人工智能的发展和应用给人们留下了深刻的印象。神经网络是深度学习和人工智能的关键元素,然而,真正了解神经网络工作机制的人少之又少本书用轻松的笔触,一步一步揭示了神经网络的数学思想,并介绍如何使用Python 3.5编程语言开发神经网络

    本书将带领您进行一场妙趣横生却又有条不紊的旅行——从一个非常简单的想法开始,逐步理解神经网络的工作机制。您无需任何超出中学范围的数学知识,并且本书还给出易于理解的微积分简介。本书的目标是让尽可能多的普通读者理解神经网络读者将学习使用Python开发自己的神经网络,训练它识别手写数字,甚至可以与专业的神经网络相媲美。

    本书适合想要了解深度学习、人工智能和神经网络的读者阅读,尤其适合想要通过Python编程进行神经网络开发的读者参考。

    小福利

    关注【异步社区】服务号,转发本文至朋友圈或 50 人以上微信群,截图发送至异步社区服务号后台,并在文章底下留言你的开发经验,或者试读本书感受,我们将选出3名读者赠送《Python神经网络编程》1本,赶快积极参与吧!
    活动截止时间:2018年4月25日

    ​在“异步社区”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步图书一本。赶紧来参加哦!

    扫一扫上方二维码,回复“关注”参与活动!

    阅读原文,购买《Python神经网络编程》

    阅读原文

    展开全文
  •  对于验证码的需求者来说,我们一直在分析其为软件工作者以及一些互联网网络营销个人或者机构,而这些顾客平日对验证码的要求都有哪些呢?为什么会有如此高的要求呢?   要求一:高质量 对于软件工作者或者互联网...
  • 光流与行为识别讨论

    千次阅读 2018-05-09 21:28:40
    一直以来,行为识别...为什么光流对于行为识别问题有帮助?光流中的什么信息对行为识别问题是有利的?我们怎么能让光流biand 作者这篇文章[1]中深入讨论了光流与行为识别的结合,并通过实验观察到如下结论...
  • 提示:关于python打包教程,最近有网友提醒我,我才发现被segmentfault给我隐藏起来了,除了我,其他人都看不见,具体原因不知道为什么,可能是因为我做了个爬虫软件演示吧。因为是几年前写的所以,也就不考虑转移到...
  • 一直有疑问, 数据链路收发包时是根据MAC地址来认证的, 为什么还要IP地址, 这个不太好理解, 想想如下几个情景, 1. 网络中只有MAC地址的情况下, 网络通信会是个什么情形. 1.1 baidu服务器换了一台, mac地址换了, 那就...
  • 为什么声学模型是这种形式我一直有困惑,因为实际使用中,现在的声学模型一般都是神经网络,神经网络的输入是声学特征,输出直接就是某个音素或者音节的概率了,和上述对声学模型的描述并不相符。向同事请教后,...
  • GAN对抗生成网络

    2020-11-19 10:15:36
    1.为什么GAN难以训练? GAN网络包含有:生成模型和判别模型两种。 我们之前一直用判别模型,(分类、回归)都是判别模型。 而对于生成模型:往往比判别模型更加困难。就像是识别莫奈的绘画要比模仿莫奈的绘画...
  • 网络维护的疑问

    2015-03-22 17:29:56
    今天一个寝室做网络维护的时候,发现开始网线插上电脑没有反应,但是用测线仪测了一下后,再插上电脑,显示有反应但是一直显示正在识别,然后我重启了电脑,咦,这次就可以了!这是为什么呢。猜想:测线仪的强电流...
  • 神经网络的分类分析

    2011-03-16 22:50:03
    人工神经网络作为智能算法的一种,一直以来实践方面取得了一定的成就,比如数字识别、信号处理、数据预测、内容分类等等,但是理论方面还是缺乏相关的严格数学分析与证明。   至于神经网络的相关算法分析将...
  • 本博客是针对李宏毅教授youtube上上传的机器学习系列课程视频的学习笔记。(视频地址)卷积神经网络(Convolutional Neural ...为什么用CNN来识别图像(Why CNN for Image)Motivation to use CNN: previous fu
  • ##为什么我这样做:神经网络目前是机器学习中非常流行和强大的技术。 谷歌将它们用于语音识别和图像处理。 以前,我一直在使用由 Olin 的另一位学生 Alec Radford 编写的出色实现,但遗憾的是,它不够快,而且我不...
  • 可解释性神经网络——1.xNN

    千次阅读 2020-07-20 17:48:03
    例如:在识别一段话的语义情境时,计算机直接通过神经网络,给出这段话是积极的还是消极的,并且给出一个百分比作为置信度。但我们并不知道为什么计算机能够直接给出这样的结果,其内部的判断机制,都无法知晓。那么...
  • Haar-Feature分类器和卷积神经网络

    千次阅读 2018-09-03 11:40:42
    以情感识别模型例!  我一直都看到它:“基于Haar特征的级联分类器”,“Viola和Jones首先提出的类哈尔特征”......但究竟是什么类似Haar?它与卷积神经网络什么关系?   Haar-Feature就像CNN中的内核,...
  • 以金钱导向的竞价结果是会创造一定影响力,但是想维持就要一直投入。品牌的真正价值可以通过媒体软文的自然访问者人数或他们社交媒体或短视频媒体平台上发布的自然观看次数来识别。 影响品牌知名度的另外一件事...
  • 啊D网络工具包 是一个网络测试工具,但有一定的危险性,请使用者必须中国法律容许范围内使用本软件,如超出中国法律容许范围使用软件造成的后果由使用者承担! 本软件不会收费,将一直免费下去! 老早前修改过...
  • 爬虫为什么需要换IP,因为许多网站都会对爬虫行为进行识别,一旦认定你的行为是爬虫,便会锁定你的IP,导致爬虫爬取不了信息,下面跟着芝麻HTTP代理IP来加强一下对蜘蛛爬虫的认识。 蜘蛛是一种半自动的程序,就象...
  • CapsNet个人理解与总结

    千次阅读 2018-05-22 21:40:43
    其实回过头来再想一下神经网络和CNN这一系列的模型,他们放佛一直在强调特征的识别,通过什么样的方法能够更准确高效的识别图像的特征,就像CapsNet一直在强调他们的Net具有方向、大小等属性的识别和内部联系的生成...
  • 损失函数一直在下降,为什么识别率上不去。 1.最常见的原因:过拟合 过拟合值得单独开个章节。主要包括 1.数据量小,网络复杂 2.learning rate 比较高,又没有设置任何防止过拟合的机制 解决方法主要包括 1....
  • 很多想入门新手就是被忽悠着收藏收藏再收藏,但是最后还是什么都没有学到,也就是"资源收藏家",也许新手要的就是 MachineLearning(机器学习) 学习路线图。没错,我可以给你们的一份,因为我们还通过视频记录下来...
  • 一直在学习Python已有一段时间了,最​​初是通过CodeCombat学习的,但是主要是编写实用程序并作为Matlab的替代品-完全是由于许可证成本的缘故。 在玩starblast.io之后,我偶然发现了这款游戏,这是一款非常出色,...
  • 训练集明明很高,验证集,测试集精度却很低

    千次阅读 多人点赞 2020-04-30 22:53:39
    损失函数一直在下降,为什么识别率上不去。 1.最常见的原因:过拟合 过拟合值得单独开个章节。主要包括 1.数据量小,网络复杂 2.learning rate 比较高,又没有设置任何防止过拟合的机制 解决方法主要包括 1.简化模型...
  • Ridepeer-crx插件

    2021-04-03 22:56:06
    我们已经厌倦了与我们一直在寻找的搜索结果不符的搜索结果。 为什么计算机无法理解我的需求,并在正确的时间为我提供正确的内容? 好吧,我们将修复那些人。 我们将尽快解决它。 网络的力量必须在消费者端。 让...
  • 自己已经做过两个网络通讯的软件了,但是一直也没有静下心来,把TCP/IP完整地看完,总是缺什么什么,这回一定要保证看完,同时我要记录下来。 由于是自己的心得,所以也不见得正确和系统,主要还是留着自己以后看...

空空如也

空空如也

1 2 3 4 5 6
收藏数 119
精华内容 47
关键字:

为什么一直在识别网络