深度学习环境之Python语言介绍

白癜风医院诚信承诺 http://m.39.net/disease/a_6169059.html
随着计算机编程技术的不断发展,人们对于Python语言的理解也进一步加深,Python语言也逐渐发展成广受程序员欢迎的一种编程语言。在本小节中,将介绍Python语言的概况以及发展历程及Python库文件。

1Python语言的概况及发展历程

Python语言作为广受程序开发者喜爱的开发工具,是一种面向对象的语言。从20世纪90年代初诞生至今,被广泛的应用在机器学习、深度学习、图像识别等科学计算当中。尤其在当下大数据时代,Python越来越受开发者的欢迎,高等院校、科研机构以及IT行业的开发人员在日常的事务管理中,Python语言因其强大的数据处理和数据可视化能力被频繁使用。Python语言在版本更替的过程中,越来越多的工具包加入其中,这些软件包进一步提高了Python语言的数据处理能力。目前,Python语言已经成为解决大数据算法问题的不二之选。Python的创始人为荷兰人吉多·范罗苏姆(GuidovanRossum)[35],在其发展过程中,产生了许多版本,最早年10月16日发布了Python,年12月3日发布了Python3,在年的时候,Python被评为最受程序员喜欢的语言。

其特点:

?简洁性;?易读性;?可扩展性目前,国内外的许多知名高校如麻省理工,卡耐基梅隆等都将Pyhton语言作为基础性的编程语言来进行教学,尤其是在程序设计和编程导论这类课程中。相比于其他面向对象语言,Python语言还有一项所独有的规则,即缩进规则,该规则使得Python语言在整体上具有整齐划一的清晰风格。Python语言发展至今,其缩进规则已经成为其语法中非常重要的一项规则。这样的规则就使得Python语言成为一种非常易于维护的语言,这为以后在世界范围内的快速发展奠定了基础,使其成为应用广泛,最受用户欢迎的语言之一。为方便程序开发人员,Python中提供了许多方便的科学计算包,例如进行科学计算的基础包NumPy、深度学习的基础包PyTorch,数据分析包Pandas,深度学习框架即Caffe,计算机视觉库OpenCV,医学图像处理库ITK,三维可视化库VTK等。下面分别对这些进行介绍。

2Python软件包

在Python中,有很多用于科学计算的软件包,为我们提供了许多方便快捷的函数,特别是在科学计算和数据分析方面,为我们解决工程问题提供了很多方便。其中有进行科学计算的基础包NumPy,数据分析包pandas以及pytorch,caffe2等,

1.NumPy

NumPy是一种基础数据包,在Python中主要提供科学计算的相关函数,可进行复杂的数据计算,具有以下一些特点:?提供高效处理函数;?N维数组对象定义;?支持向量化的操作;?存储大型矩阵以及矢量处理;?高效的列表(nestedliststructure)结构。NumPy为程序开发人员提供了许多数据类型,其中最主要的是N维数组类型ndarray,其与原生Python列表的区别如下图所示:在上图中,Ndarray中存储的数据类型都是相同的,而Python原生列表中的数据的类型都是任意的,这就使得Ndarray中数据的存放地址都是连续的,而Python原生列表中数据与数据的地址都是随机存储的。这样的存储方式就使得Nadarry在批量处理数组元素的时候更快。

2.Pandas

在NumPy基础包中包含了一个数据分析包Pandas,该包是专门为解决数据分析任务而开发的,Pandas具有以下特点:?开源性,Pandas以开源性质发布的;?定义不同维数的数据结构;?定义了字符串、boolean等多种不同的数据类型。

3.PyTorch

PyTorch是由一种深度学习框架,由Facebook团队开发,其特点如下:?Pytorch使用动态计算图;?使用GPUs进行计算;?拥有丰富的API。因此,Pytorch一经发布,便受到了许多的开发人员和科研人员的喜爱,成为人工智能领域最受欢迎的工具之一。其优点如下:?简洁代码易于理解:PyTorch的设计采用由低到高的抽象层次,追求最少的封装,使得其代码更容易被开发者所接受;?高效的运行速度:在许多的测评当中,相较于其他的深度学习框架,PyTorch的运行速度更具优势;?友好易用接口:PyTorch沿用Torch的接口设计,让程序开发者不必考虑太多关于框架本身的束缚,尽可能地只专注于实现自己的想法;?社区服务成熟:Facebook研究团队提供的网络社区方便了开发者的相互讨论,线上交流,详细的指南说明提供了完整的文档,更加方便程序的开发。PyTorch利用其优势可进行高效率的生产和灵活的实验。Pytorch的便捷和高效的计算效率以及其本身所具备的独特优势,让它在众多的深度学习框架中脱颖而出,成为人工智能处理最有效的工具。

4.Caffe2包

Caffe2(Convolutionalarchitectureforfastfeatureembedding2)于年4月18日发布,由C++语言开发,是一种典型的开源深度学习框架,它既可以在CPU上运行也可以在GPU上运行,其特点是使用简单、运行速度快、代码易于扩展和成熟的社区等优势,Caffe2一经发布便得到众多的研究开发人员的使用。Caffe和Caffe2是两种典型的深度学习框架,它们在输入层和隐藏层上却有着较大的区别,具体如下图2所示:

从图中我们看出,Caffe2把Caffe中的权重值和偏置值挪到了输入层当中,中间的隐藏层叫做Operators,Operatpr是Caffe2的基本计算单位,每个Operator都包括所需的计算逻辑。这种差异同样也体现在神经网络的构成方式上。Caffe网络是由粒度较粗的层组成,即每层的权重值和偏置值都是以层级别存储的,这种做法虽然简单直观,其缺点如下:

(1)平台优化繁琐,在对arm进行具体优化时,不仅只实现该层的arm实现,还要修改其他地方的代码。

(2)需要修改caffe.proto文件才能添加新的层,且需要重新编译,特别是在添加多层时更复杂。

(3)偏置值和权重值的参数和层绑定在一起,设置复杂。

在Caffe2中,由于权重值和偏置值都挪到了输入层当中,使得每一层可以由更细粒度的operator组合而成,除此之外还采用了其他深度学习框架。Caffe2优点如下:

(1)支持多平台,在Caffe2中operator仅仅是处理数据的逻辑,这就可以有针对性的优化,这种优化还包括多个operator组合的优化。(2)新层生成更加方便,每一层变成了operator的组合,剥离了权重值和偏置值的参数。而另一方面也可以更方便的对权重值和偏置值进行控制。例如把权重值和偏置值都当成参数,就可以把一个函数变成一类函数了。(3)代码编写高效,可以以声明式的方式对神经网络进行编写,向使用latex编写文档一样,使用所见即所得的方式。Caffe2作为一款非常出色的开源深度学习框架,从结构、性能、代码质量以及官方文档和实例的详尽程度来看,无论是对于刚接触深度学习的新手还是专业的开发研究人员,都可以大大降低学习的难度。目前Caffe已经可以充分利用英伟达的GPU深度学习平台,并且可以根据运行的状态在CPU和GPU之间进行无缝切换。预览时标签不可点收录于合集#个上一篇下一篇

转载请注明:http://www.aierlanlan.com/grrz/663.html