Python快乐编程:人工智能深度学习基础
上QQ阅读APP看书,第一时间看更新

2.1 初识Theano

Theano是最早的深度学习开发工具之一,是在BSD许可证下发布的一个开源项目,它的开发始于2007年,由Yoshua Bengio领导的加拿大蒙特利尔理工学院LISA集团(现MILA)开发,Theano的名字源于一位著名的希腊数学家,它是为深度学习中处理大型神经网络算法所需的计算而专门设计的,擅长处理多维数组库,与其他深度学习库结合使用时十分适合用于数据探索。Theano首次引入了“符号计算图”来描述模型表达式的开源结构,目前,这被看作深度学习研究和开发的行业标准。Theano可以被理解成数学表达式的编译器:用符号式语言定义需要的结果,该框架会对程序进行编译,从而高效运行于GPU或CPU。目前许多优秀的深度学习开源工具库对Theano的底层设计进行了借鉴,如Tensorflow、Keras等,因此,掌握Theano的使用方法可以作为学习其他类似开源工具的铺垫。

Theano是一个基于Python和Numpy的数值计算工具包,它可以定义最优化以及估值高维度的数学表达式,也可以通过一系列代码优化从而获得更好的硬件性能。

theano.tensor数据类型包含double、int、uchar、float等,最常用的类型是int和float,具体如下所示:

· 数值——iscalar(int类型的变量)、fscalar(float类型的变量);

· 一维向量——ivector(int类型的向量)、fvector(float类型的向量);

· 二维矩阵——fmatrix(float类型矩阵)、imatrix(int类型的矩阵);

· 三维float类型矩阵——ftensor3;

· 四维float类型矩阵——ftensor4。

Theano与Tensorflow功能十分相似(前面提到,Tensorflow借鉴了Theano的底层设计),因而两者常常被放在一起比较,这两者都偏向底层。Theano更像一个研究平台,并没有专门用于深度学习的相关接口。例如,Theano中没有现成的神经网络分级,因此,在实际应用中需要从最基本的网络层开始构建所需要的模型。

经过多年发展,目前有大量基于Theano的开源深度学习库被开发并得到实际应用,例如Keras、Lasagne和Blocks。这些更高层级的wrapper API可以大幅减少开发时间以及开发过程中的麻烦。现在,大多数使用Theano的开发者都会借助辅助API进行开发,Theano已经逐渐形成一套生态系统,可以在使用Theano时借助其他API来降低其使用难度。

在过去的很长一段时间内,Theano都是深度学习开发与研究的行业标准。由于Theano是由高校的研究团队研发的,它的设计初衷是服务于学术研究,这导致深度学习领域的许多学者至今仍在使用Theano。对于深度学习新手而言,使用Theano练手对于深入理解模型的原理有很大的好处,但对于开发者而言,还是建议使用Tensorflow等更高效的深度学习工具。