从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现
Posted 夕阳叹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现相关的知识,希望对你有一定的参考价值。
卷积神经网络(CNN)实现
背景
卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇。
神经网络实现思路
“扔掉神经元”
尽管所有教程在介绍神经网络时都会把一大堆神经元画出来,并且以输入节点——神经元——输出结点连线,但是,在编程实现时,基于神经元去编程是低效的。典型如这篇经典文章里面的代码:
http://blog.csdn.net/zzwu/article/details/575125。
比较合适的方法是将神经网络每个层仅仅视为一个矩阵算符,对输入作变换后传递给下一层。基于矩阵运算的编程,思路清晰、容易校验,最重要的是便于后续性能优化,足够快。
因此,在写神经网络算法时,建议把“神经元”这一概念扔掉,在推导出矩阵变换公式之后,这一概念对我们工程师而言已经没有意义,我们面对的,仅仅是一个个的矩阵算符,理解算符并实现就可以了。实现神经网络,就是实现各类矩阵算符,并按顺序连接起来。
网络结构的表示
如图所示,一个神经网络Net由若干个Layer和一个全局参数矩阵Parameters(参数矩阵高为1,实则为一个向量)构成,每个Layer拥有自己独立的算符Op和运算缓存Cache,并将全局参数矩阵中的一部分映射为自己的参数矩阵P。
Layer结构
每个层由算符、参数和缓存构成。
算符负责实现矩阵变换:
Y=f(X,P)
以上是关于从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现的主要内容,如果未能解决你的问题,请参考以下文章