使用tensorflow构建一个卷积神经网络

作者: 机器学习之路 2018-08-27 17:05:48

一、卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现,主要包括卷积层(convolutional layer)和池化层(pooling layer),主要应用于图像、视频、时间序列信号、音频信号、文本数据等。

一般的卷积神经网络都是由多个卷积层组成,每个卷积层主要包括以下几个部分:

1、图像会通过多个不同的卷积核进行滤波,并加偏置,提取出图像的局部特征,每一个卷积核都会映射一个新的2D图像。

2、将前面的卷积核的滤波输出结果,并使用非线性的激活函数进行处理。最常用的激活函数有ReLU函数以及它的变种,还有tan函数,以前最常用的激活函数是sigmoid函数。

3、对激活函数的结果进行池化操作(***池化、平均池化),目的是为了达到降采样,将2×2的图片降为1×1。最常用的是***池化,可以保留图像的显著特征,并提升模型的畸变容忍能力,提高模型的鲁棒性。

二、使用tensorflow构建一个卷积神经网络

通过tensorflow来构建一个卷积神经网络并将其应用在MNIST手写数据集上,***可以得到一个99%以上的准确率。这个模型主要包含四层:

***层:卷积层,卷积核的大小为5×5,一共包含32个卷积核,步长为1,padding为SAME使得输出图片的大小和输入一致。

第二层:卷积层,卷积核的大小为5×5,一共包含64个卷积核, 步长核填充方式和上一层卷积层一样。

第三层:全连接层,输入7×7×64,输出一个1024维的向量,并使用dropout使得部分节点失活来防止过拟合。

第四层:softmax层,输入是一个1024维的向量,输出一个10维的向量。

1、***层卷积层

***层卷积层的输入是一个28×28×1的图片,图片的宽高都是28,图片通道为1,通过卷积层之后的输出为28×28×32,然后通过***池化,输出为14×14×32。

2、第二层卷积层

第二层卷积层的输入是14×14×32,通过卷积之后的输出是14×14×64,然后通过***池化之后的输出为7×7×64。

3、第三层全连接层

第三层的输入是一个7×7×64的向量,所以要在计算之前对第二层卷积层的结果进行reshap操作,全连接层通过ReLU激活函数之后,再对其进行dropout操作。

4、第四层softmax层

第四层的输入是一个1024维的向量,输出是一个10维向量,表示属于0-9数字的概率。

5、权重的初始化

在卷积神经网络中,权重的初始化很重要,这里我们使用的是一个截断的正态分布函数来参数权重,并保证参数的标准差为0.1。 截断的正态分布是指如果函数随机产生的值与均值的差值大于两倍的标准差,那这个值将会被重新生成,来保证初始化权重的值不会相差太大。

6、初始化截距

截距的值都初始化为0.1

7、卷积函数

卷积的步长为1,填充方式是SAME,来保证卷积的输入和输出的大小一致。

8、***池化函数

***池化的横向和纵向的步长都为2,使得输出图片大小为输入图片大小的一半,达到降采样的目的。

完整代码:

https://github.com/steelOneself/tensorflow_learn/blob/88f614508081d8c3a926ea000966aa8d1ac35440/MNIST_examples/CNNMNIST.py

tensorflow 神经网络 图像处理
上一篇:全球AI芯片投资版图公开,机会都在这五大场景 下一篇:什么是自注意力机制?
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

全球首个翻译引擎进化归来 “细节狂魔”搞定方言

最近,一款在线机器翻译软件在日本大火。这款翻译软件名叫DeepL,大火的原因正是因为它工作太负责了,翻译得太过准确,在日本引起了热议。

刘俊寰 ·  20h前
从零开始构建简单人工神经网络:1个隐藏层

我们在本文中将构建一个有1个输入层、1个隐藏层和1个输出层的神经网络。我们会看到,我们构建的神经网络能够找到非线性边界。

布加迪 ·  2020-03-26 09:00:00
AI芯片之卷积神经网络原理

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。

人人都是极客 ·  2020-03-25 09:48:10
从零开始构建简单人工神经网络:1个输入层和1个输出层

本上下篇将介绍仅使用numpy Python库从零开始构建人工神经网络(ANN)。上篇将介绍构建一个很简单的ANN,只有1个输入层和1个输出层,没有隐藏层。下篇将介绍构建一个有1个输入层、1个隐藏层和1个输出层的ANN。

布加迪 ·  2020-03-25 09:00:00
华为开源只用加法的神经网络:实习生领衔打造,效果不输传统CNN

没有乘法的神经网络,你敢想象吗?无论是单个神经元的运算还是卷积运算,都不可避免地要使用乘法。

佚名 ·  2020-03-17 10:01:22
五分钟了解机器学习十大算法

本文为有志于成为数据科学家或对此感兴趣的读者们介绍最流行的机器学习算法。

Fahim ul Haq ·  2020-03-06 10:45:48
40纳秒完成图像分类,图像传感器自带神经网络登上Nature

AI芯片还可以怎么搞?最新登上Nature的研究带来新启发。试想一下,如果人类眼睛可以直接处理图像——不用劳烦大脑,那视觉图像信息的处理速度岂不是可以大大提升?

鱼羊 晓查 ·  2020-03-05 15:59:10
神经网络技术帮自主驾驶汽车识别幻影物体

以色列本古里安大学内盖夫网络安全研究中心的研究人员表示,在道路上投影图像形成幻影物体,可导致行驶中的半自主或全自主驾驶汽车误判并急刹车,从而危及车内驾驶员和乘客的生命。他们正在研究的神经网络技术,将解决自主驾驶汽车无法识别幻影物体的缺陷。

毛黎 ·  2020-02-07 13:33:13
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载