从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现

Posted 夕阳叹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现相关的知识,希望对你有一定的参考价值。

卷积神经网络(CNN)实现

背景

卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇。

神经网络实现思路

“扔掉神经元”

尽管所有教程在介绍神经网络时都会把一大堆神经元画出来,并且以输入节点——神经元——输出结点连线,但是,在编程实现时,基于神经元去编程是低效的。典型如这篇经典文章里面的代码:
http://blog.csdn.net/zzwu/article/details/575125
比较合适的方法是将神经网络每个层仅仅视为一个矩阵算符,对输入作变换后传递给下一层。基于矩阵运算的编程,思路清晰、容易校验,最重要的是便于后续性能优化,足够快。
因此,在写神经网络算法时,建议把“神经元”这一概念扔掉,在推导出矩阵变换公式之后,这一概念对我们工程师而言已经没有意义,我们面对的,仅仅是一个个的矩阵算符,理解算符并实现就可以了。实现神经网络,就是实现各类矩阵算符,并按顺序连接起来。

网络结构的表示

Net
如图所示,一个神经网络Net由若干个Layer和一个全局参数矩阵Parameters(参数矩阵高为1,实则为一个向量)构成,每个Layer拥有自己独立的算符Op和运算缓存Cache,并将全局参数矩阵中的一部分映射为自己的参数矩阵P。

Layer结构

每个层由算符、参数和缓存构成。
算符负责实现矩阵变换:

Y=f(X,P)

以上是关于从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现的主要内容,如果未能解决你的问题,请参考以下文章

深度学习之四:卷积神经网络基础

机器学习之深度学习发展进程

08-GNN 图机器学习之图神经网络

学习打卡可解释机器学习之导论

学习打卡01可解释机器学习之导论

14 深度学习-卷积