卷积神经网络对图片分类-下

接上篇:卷积神经网络对图片分类-中

 

9 ReLU(Rectified Linear Units) Layers

在每个卷积层之后,会马上进入一个激励层,调用一种激励函数来加入非线性因素,决绝线性不可分的问题。这里我们选择的激励函数方式叫做ReLU, 他的方程是这样f(x) = max(0, x),就是把小于零的值都归为0,好处是可以是网络训练的更快,减少梯度消失的问题出现。具体如何理解,例如:

上图A中可以通过一条直线来区分2种不同类型的数据点,然而B就不可以。但是调用激励函数经过变换之后就可以对它们进行很好的区分。

10 训练

到目前为止大家肯定会有一些疑问,卷积层是如何知道提取哪些特征图像,过滤器里的权重值是如果被确定的,全连接层是如何进行对比的。

接下来我们就来看看,网络是如何被训练的。其实网络在训练的过程中计算机是通过反向传播算法来调整过滤器的权重值。在讲解反向传播算法之前我们先来看一个类比。

当我们生下来的时候,我们的思想是崭新的,不知道什么是鸟什么是狗。类似在CNN在开始训练之前,权重值也是随机初始化的,过滤器不知道提取哪些特征值。当我们长大一些的时候,父母和老师给我们看不同的图片并且告诉我们这些图片对应的是什么。这种思想或者方法就是给图片打标签,就是CNN训练的过程。在CNN训练之前,其实我们已经有一些训练样本,里面有成千上万张猫,狗,鸟,船的图片,并且每一张图片都有一个对应的标签说明它是什么动物,例如有一张训练图片被标记为狗,它的标签是[0 0 0 1 0 0 0 0 0 0],属于它的分类对应的位置被标记为1,其他不属于它的分类位置被标记为0值。

反向传播算法可以分成4个不同的部分,向前传递,损失函数,反向传递,更新权重。在向前传播过程中,你拿到一张训练图片28X28X3的数组,通过网络传递它。刚开始所有的权重值都被随机初始化,它们可能会是这样一些随机值[0.3, 0.1, 0.4, 0.2, 0.3....]。网络通过初始化的权重值,是无法提取准确特征图像 ,因此无法给出任何合理的结论,图片属于哪种类别。这时我们就需要反向传播中的损失函数来帮助网络更新权重值找到想要的特征图像。损失函数的定义方式有很多种,但是一种常用方式的是MSE(mean squared erro)均方误差。


这里target就是图片的真实分类值,output就是图片通过网络训练出来的分类值,然后调用均方误差就得到了损失值。这个损失值在网络刚开始训练的时候可能会很高,这个很好理解因为权重值都是随机初始化出来的。我们的最终目的就是想要得到预测值和真实值一样。为了达到这个目的,我们就需要尽量减少损失值,损失值越小就说明预测结果越接近。在这一个过程中,我们就需要不断的调整权重值,来寻找出哪些权重值能使网络的损失减小。具体怎样来寻找这些权重值,就需要使用到梯度下降算法。它的示例图如下:


刚开始在曲面上有一个点,这个点就是我们的初始化权重,然后不停的更新权重值,让这个点沿着曲面的边缘慢慢下降,最终降到最低点,得到一个很小的损失值。在训练的过程中,你可以指定一个下降速率或者叫做训练速率,也就是这个点每次移动的步伐。给一个大的训练速率意味着权重在更新的时候步伐更大,训练的速度更快,但是当你给的值太大时就有可能在快达到最低点时跳跃过它,这样就获取不到最佳权重值了。

做一次前向传递,损失函数,反向传递和参数更新的过程通常被称为one epoch。 每次训练都会指定完成epoch的次数,然后程序就会不断重复这一过程,当最后一轮训练结束之后,我们的网络也就被训练好了,得到了训练出来的一些权重值。

11 测试

最后,为了检测训练出来的CNN模型是否准确,我们需要一些不同的图片和标签,把他们传递给CNN,用预测出来的结果和真实结果做一下对比就可以知道训练出来的模型是否准确了。

(完)

参考:

http://neuralnetworksanddeeplearning.com/chap6.html#convolutional_neural_networks_in_practice

https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner‘s-Guide-To-Understanding-Convolutional-Neural-Networks/

时间: 2024-08-24 16:48:37

卷积神经网络对图片分类-下的相关文章

修剪版的卷积神经网络在性别分类中的应用

前言:今天为大家带来一篇文章,发在CVPR 2017.是在LFW上做的实验,是一个二分类问题---性别识别. 原文:Efficient Gender Classification Using a Deep LDA-Pruned Net 摘要:本文也是说到了,卷积深度神经网络在目标检测,模式识别等各个方面取得了非常好的效果,是必须要有更强大的GPU支持.所以针对这个问题提出了一个修剪的卷积神经网络,用的是VGG基模型.在这里补充下VGG网络结构. VGG: VGG是一种非常有效的,经典的卷积神经网

基于卷积神经网络CNN的电影推荐系统

本项目使用文本卷积神经网络,并使用MovieLens数据集完成电影推荐的任务. 推荐系统在日常的网络应用中无处不在,比如网上购物.网上买书.新闻app.社交网络.音乐网站.电影网站等等等等,有人的地方就有推荐.根据个人的喜好,相同喜好人群的习惯等信息进行个性化的内容推荐.比如打开新闻类的app,因为有了个性化的内容,每个人看到的新闻首页都是不一样的. 这当然是很有用的,在信息爆炸的今天,获取信息的途径和方式多种多样,人们花费时间最多的不再是去哪获取信息,而是要在众多的信息中寻找自己感兴趣的,这就

Neuromation新研究:利用卷积神经网络进行儿童骨龄评估

近日,Neuromation 团队在 Medium 上撰文介绍其最新研究成果:利用卷积神经网络(CNN)评估儿童骨龄,这一自动骨龄评估系统可以得到与放射科专家相似或更好的结果.该团队评估了手骨不同区域,发现仅对掌骨和近端指骨进行评估,得到的结果与对整个手骨进行评估的结果相差无几.为了克服放射图像的质量和多样性问题,该团队引入了严格的清理和标准化过程,以增强模型的鲁棒性和准确率,提升骨龄评估的准确率.提高结果的可复现性以及临床医生的效率. Alexander 的论文<Pediatric Bone

[转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR

Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Michael Nielsen 先生的 Deep Learning 教程. 用了他的代码在theano下测试了下中文车牌字符的识别.由于我没有GPU,简单的在进行了16个epoch之后,识别率达到了 98.41% ,由于图像本来质量就不高,达到这个识别率,效果挺不错了. 一共 31 类 车牌中文字符数据来源于

Tensorflow--基于卷积神经网络实现男女声音分类识别

现在网上基本都没有对应的基于神经网络声音分类识别的较简单的教程,所以我打算通过我自己的思路,编写出一个实现男女声音识别的一个深度学习的模型. 因为没有验证过该想法是否正确,所以想通过该博客来记录实验的结果,无论最终是否能成功识别男女声音,我都想将此次的实验记录下来. 首先从网站http://festvox.org/cmu_arctic/dbs_bdl.html,爬取相关的男人和女人的声音文件. 爬取过程的代码如下,省略,以下直接用到我的代码仓库中的爬取代码:(将在最后提供爬取的男女声音文件集合,

卷积神经网络_(2)_分类与回归_几类经典网络简介

1.经典神经网络有:2012年提出的AlexNet和2014年提出的VGGNet,结构图分别如下: 2.分类与回归: (1)分类(classfication):就是经过经过一系列的卷积层和池化层之后,再经过全连接层得到样本属于每个类的得分,再用比如softmax分类其对其进行分类: (2)回归(regression):相当于用一个矩形框来框住要识别的物体,即localization; 如下: 这里,回归用了拟合的方法,即给定输入中物体的位置(x,yw,h),再用卷积网络的输出(x',y',w',

tensorflow学习之(十)使用卷积神经网络(CNN)分类手写数字0-9

#卷积神经网络cnn import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #数据包,如果没有自动下载 number 1 to 10 data mnist = input_data.read_data_sets('MNIST_data',one_hot=True) #用测试集来评估神经网络的准确度 def computer_accuracy(v_xs,v_ys): global pre

卷积神经网络分类与回归任务的应用简介

location 对输入图像定位,找到盒子坐标(x,y,w,h):Clssificaion and Location的最后一层是的特征做两件事,一个是分类,一个是定位.         训练时使用已有的模型,也就是最后一层全联接之前所有的参数都用已有模型的,然后在这个基础上进行微调(fine tune),使其向着想要的网络去收敛.               分类时,softmax计算loss,随机梯度下降SGD反向传播更新参数.测试时同时得到分类得分和定位(坐标).              

CNN卷积神经网络新想法

最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下. 其实卷积神经网络并不是一项新兴的算法,早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时只用来识别支票上的手写体数字,并且应用于实际.2006年深度学习的泰斗在<科学>上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力,从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的.有一定应用经验的深度结构,重新回到人们视线,此时硬件的运算