版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第02Python无论是在机器学习还是深度学习中,Python已经成为主导性的编程语言。而且,现在许多主流的深度学习框架,例如PyTorch、TensorFlow也都是基于Python。这门课主要是围绕“理论+实战”同时进行的,所以本文,我将重点介绍深度学习中Python的必备知识点。Python是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开版于1991年。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其 为什么人工智能、深度学习会选择Python呢?一方面是因为Python作为一门解释型语言,入门简单、容易上手。另一方面是因为Python的开发效率高,Python有很多库很方便做人工智能,比如Numpy、Scipy做数值计算的,Sklearn做机器学习的,Matplotlib将数据可视化的,等等。总的来说,Python既容易上手,又是功能强大的编程语言。按照《Python学习手册》作者的说法,Python可以从支持航空航天器系统的开发到小游戏开发的几乎所有的其实,人工智能的算法的底层还是由C/C++编写的,因为是计算密集型,需要非常精的优化,还需要GPU、硬件之类的接口,这些都只有C/C++能做到。Python实际上是实现API调用的功能,例如所有的深度学习框架PyTorch、TensorFlow等,底层都是由C/C++编写的。由于Python是顶层高级语言,它的缺点就是运行速度慢,但是这丝毫不影响Python的普及。如今,在GPU加速的前提下,Python的运行速度已经很快了。在众多因素影响下,Python成为了人工智能的最主要的编程语言。下面这来自TIOBE编程社区Top10编程语言TIOBE指数走势(2002-如今,Python已经仅次于Java、C、C++之后,第四,且呈逐年上升的趋势。而在人工智能领域,Python是当之无愧的第一。Python目前有两个版本:2和3。人工智能领域主要使用Python3,建议安装Python3版python--FunctionPython中的函数以关键字def来定义,例如:defifx>return'positive'elifx<0:returnreturnforxin[-1,0,1]:#Prints"negative","zero",上面呢,就是定义一个sign函数,根据输入x与0的大小关系,返回positive、或zerodefgreet(name,ifO,%s!'%o,%s'%greet('Will')#Printsgreet('Tony',o,#PrintsO,Pythonclass#definit(self,=#Createaninstance#Instancedefgreet(self,ifO,%s!'%o,%s'%g=Greeter('Will')#ConstructaninstanceoftheGreeter#Callaninstancemethod;prints#Callaninstancemethod;printso,O,initselfselfnamePython中类的继承也非常简单,最基本的继承方式就是定义类的时候把父类往括号里一放就class"""ClassKnowinheritencedfromGreeter"""defmeet(self):print('Nicetomeetk=Know('Will')#ConstructaninstanceoftheGreater#Callaninstancemethod;printso,#Callaninstancemethod;prints"Nicetomeet深度学习神经网络模型包含了大量的矩阵相乘运算,如果使用for循环,运算速度会大大降低。Python中可以使用dot函数进行向量化矩阵运算,来提高网络运算效率。我们用一个例子来比较说明for循环和矩阵运算各自的时间差异性。importnumpyasimporta=b=tic=foriinc+=a[i]*b[i]toc=time.time()print("forloop:"+str(1000*(toc-tic))+c=tic=c=np.dot(a,b)toc=time.time()print("Vectorized:"+str(1000*(toc-tic))+>>>>for>>>>显然,两个矩阵相乘,使用or循环需要大约00ms,而使用向量化矩阵运算仅仅需要大约1ms,效率得到了极大的提升。值得一提的是,神经网络模型有的矩阵维度非常大,这时候,使用矩阵直接相乘会更大程度地提高速度。所以,在构建神经网络模型时,我们应该尽量使用矩阵相乘运算,减少for循环的使用。顺便提一下,为了加快深度学习神经网络运算速度,可以使用比CPU运算能力更强大的GPU。事实上,GPU和CPU都有并行指令(ParallelizationInstructions),称为SingleInstructionMultipleData(SIMD)。SIMD是单指令多数据流,能够多个操作数,并把它们打包在大型寄存器的一组指令集。SIMD向量化矩阵运算更快的原因。相比而言,GPU的SIMD要比CPU更强大。Python中的广播(Broadcasting)机制非常强大,在神经网络模型矩阵运算中非常有用。广让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过面加1输出数组的shape是输入数组shape如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够当输入数组的某个轴的长度为1如果觉得上面几条机制比较晦涩难懂,没关系。简而言之,就是Python白了。是不是觉得广播机制很方便?这也正是Python强大的地方,能够帮我们省很多事。值得一提的是,在Python程序中为了保证矩阵运算正确,可以使用reshape函数设定矩阵a=上面这条语句生成的向量维度既不是(6,1),也不是(1,6),而是(6,)。它既不是列向量也不是行向量,而是rank1aray。rank1array的特点是它的转置还是它本身。这种定义实际应用中可能会带来一些问题,如果我们想要定义行向量或者列向量的话,最好这样写:a=a=另外,我们还可以使用assert语句对向量或者数组维度进行判断。如果与给定的维度不同,则程序在此处停止运行。assertassert(a==MatplotlibPythonmatplotlib.pyplotplotMatplotlib2Dimportnumpyasimportmatplotlib.pyplotas#Computethexandycoordinatesx=np.arange(0,4*np.pi,0.1)y=np.sin(x)#Plotthepointsusingplt.plot(x,#Youmustcallplt.show()tomakegraphics我们也可以在一片中同时画多个曲线importnumpyasimportmatplotlib.pyplotas#Computethexandycoordinatesx=np.arange(0,4*np.pi,0.1)y_sin=np.sin(x)y_cos=#Plotthepointsusingmatplotlibplt.plot(x,y_sin)plt.plot(x,y_cos)plt.xlabel('xaxislabel')plt.ylabel('yaxislabel')plt.title('SineandCosine')plt.legend(['Sine','Cosine'])最后介绍一下如何显示importnumpyasfromscipy.miscimportimread,imresizeimportmatplotlib.pyplotaspltimg=imread('./dog.jpg')img_tinted=img*[0.9,0.9,0.8]#Showtheoriginalimageplt.subplot(2,1,1)#Showthe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体检中心前台服务工作总结
- 租赁商业用房合同三篇
- 化工行业员工安全培训方案实施
- 制造行业安全管理工作总结
- 2023年高考语文试卷(天津)(空白卷)
- 2024年美术教案集锦7篇
- 2024年电力通信设备运检员理论备考试题库及答案
- 创意设计人才中介合同(2篇)
- 黄金卷8-【赢在中考·黄金八卷】(解析版)
- 2025新生入学贷款还款协议合同
- 制药课程设计三废处理
- 2024-2025学年上学期广州初中英语九年级期末试卷
- 惠州学院《大学物理》2021-2022学年第一学期期末试卷
- 期末测试卷(试题)-2024-2025学年北师大版数学五年级上册
- 关于培训的课件
- 2024上海市房屋租赁合同范本下载
- 2024消防安全警示教育(含近期事故案例)
- Starter Section 1 Meeting English 说课稿 -2024-2025学年北师大版(2024)初中英语七年级上册
- 2025年蛇年年度营销日历营销建议【2025营销日历】
- 2024-2025学年北师大版七年级上册数学期末专项复习:期末压轴题分类(原卷版)
- 2024年全国《汽车加气站操作工》安全基础知识考试题库与答案
评论
0/150
提交评论