机器学习原理与应用电子教案 5.10.2深度学习PyTroch框架_第1页
机器学习原理与应用电子教案 5.10.2深度学习PyTroch框架_第2页
机器学习原理与应用电子教案 5.10.2深度学习PyTroch框架_第3页
机器学习原理与应用电子教案 5.10.2深度学习PyTroch框架_第4页
机器学习原理与应用电子教案 5.10.2深度学习PyTroch框架_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

备课日期:年月日授课时间课时(理论+实验)周次星期:节次:授课课题深度学习[实践]教学目标1.了解PyTorch框架的安装方法。2.掌握PyTorch框架基本操作方法。教学重点1.PyTorch框架基本操作;2.利用PyTorch框架构建深度学习模型的基本流程。教学准备PPT、点名册等。教学方法实例演示。教学过程设计备注课题引入【思考】如何构建深度学习模型?【关键】PyTorch框架是由Facebook开源的基于Python语言的深度神经网络框架,不但可灵活、动态地构建神经网络,而且可通过张量计算实现强大的GPU加速。【时间】分钟。教学步骤及主要内容【主板书】§14.PyTorch框架一、概述【主板书】概述1.发展历程:2017年1月,Facebook人工智能研究院(FAIR)基于Torch(由丰富机器学习算法支持的科学计算框架)推出。2.主要特点:(1)通过高维数组(张量)、自动求导(变量)与神经网络(层/模块)等三级抽象层次实现神经网络的构建,思路明晰、结构简洁。(2)与Tensorflow的静态计算图不同,PyTorch的计算图是动态的(即可以根据计算需要实时改变计算图)。(3)利用GPU运算加速以提高深度神经网络的训练与测试的效率。【时间】分钟。【提问】。二、安装与配置【主板书】安装与配置利用Ananconda环境可快速实现PyTorch框架的安装与配置。1.搭建Anaconda环境:演示。▲Anaconda提供库或包管理与环境管理的功能,可以方便地解决Python并存、切换以及各种第三方包安装与相互连接等问题。Anaconda包含了Numpy、Scipy、Pandas、Python等720左右涉及机器学习、数据可视化等科学计算开源包及其依赖项。2.Anaconda常用命令:启动程序组中的AnacondaPrompt程序。创建虚拟环境:condacreate--nameXXXpython=XXX激活虚拟环境:condaactivateXXX查看已安装的包:condalist查看指定虚拟环境下已安装的包:condalist-XXX查看所有的环境:condaenvlist关闭当前虚拟环境:condadeactivate更新指定包:condaupdateXXX安装包:condainstallXXX卸载指定包:condauninstallXXX删除虚拟环境:condaremove--nameDL–all删除没用的包:condaclean-p删除所有包:condaclean-y–all复制虚拟环境:condacreate--namenewname–cloneoldname3.安装PyTorch。【演示】(1)命令生成方式:/。(2)命令的运行方式:Anaconda命令窗口。【强化与拓展】安装源无法连接时的解决方法:通过“win+R”快捷键打开”运行”框后输入“%HOMEPATH%”执行,然后找到并打开.condarc文件,将相关数据源链接复制相关位置即可。【时间】分钟。【提问】。三、数据类型与基本操作【主板书】数据类型与基本操作1.张量:Pytorch框架最基本的操作对象为张量(Tensor),其在结构上与Numpy库中的多维数组类似,但可以利用GPU加速其数值计算。〖PPT〗演示:张量基本操作。(1)定义矩阵:全0矩阵、全1矩阵、随机矩阵。(2)获取Tensor的尺寸:x.shape与x.size()。(3)_在方法中的意义:表示对自身的改变。(4)索引:x[:,1]。(5)改变形状:view()函数。(6)维度增加与降低:unsqueeze()与squeeze()函数。(7)Tensor与Numpy之间转换:例1.Numpy转化为Tensor:torch.from_numpy(numpy矩阵)。A=np.array([[1,2],[3,4],[5,6]])torch_A=torch.from_numpy(A)print(torch_A)例2.Tensor转化为numpy:Tensor矩阵.numpy()。A=torch.randn((3,2))#随机矩阵numpy_A=A.numpy()#转换为Numpy矩阵print(numpy_A)2.变量:Pytorch框架最重为的数据类型为变量(Variable),其在张量的基础上可实现输入数据或模型的自动求导、误差的反向传播等功能,在计算图的构建中具有极为重要的作用。(1)基本属性data属性:表示当前变量保存的数据,可通过data属性访问。grad属性:累计与保存针对变量的梯度或求导结果。creator属性:Variable的操作(比如乘法或者加法等)。(2)相关库的导入fromtorch.autogradimportVariable〖PPT〗演示:变量定义。【副板书】推导函数求导过程。importtorchfromtorch.autogradimportVariable#定义三个变量x=Variable(torch.Tensor([1,2,3]),requires_grad=True)w=Variable(torch.Tensor([2,3,4]),requires_grad=True)b=Variable(torch.Tensor([3,4,5]),requires_grad=True)#构建计算图(y=w*x^2+b)y=w*x*x+b#自动求导,计算梯度y.backward(torch.Tensor([1,1,1]))#输出求结果print(x.grad)#x.grad=2wxprint(w.grad)#w.grad=x^2print(b.grad)#b.grad=13.自动求导:在定义变量时将参数requires_grad设置为True的目的在于自动实现对指定变量的求导。【强化与拓展】张量的前向传播操作将构造一个计算图以用于计算神经网络中反向传播时的梯度。4.计算图:计算图是描述运算的有向无环图(节点为表示数据的向量、矩阵与张量,边为表示运算的由输出张量到输入张量的映射函数)。【强化与拓展】采用运算图的优势在于可使自动求导或梯度计算更加方便、快捷。例3.自动求导与计算图。问题:利用数据(x,label)={(1,5),(2,10),(3,15)}拟合直线(真实直线:y=5*x)。(1)前向传播:由x求取y。(2)计算图:y=w*xy=w*xwx(3)损失函数:L(4)误差反向传播:利用backward()函数实现。【副板书】描述关键步骤。importtorchfromtorch.autogradimportVariablex=torch.Tensor([2])#输入y=torch.Tensor([10])#输出loss=torch.nn.MSELoss()#均方误差w=Variable(torch.randn(1),requires_grad=True)#初始化参数print(w)foriinrange(10):#迭代10次y_=w*xl=loss(y,y_)l.backward()print(w.grad.data)w=Variable(w-0.1*w.grad.data,requires_grad=True)print(w)print(-2*x*(y-y_))【时间】分钟。【提问】。四、nn.Module类【主板书】nn.Module类PyTorch框架在自定义网络的时候,需要继承nn.Module类并重新实现构造函数__init__构造函数和forward这两个方法。【强化与拓展】(1)通常把神经网络中具有可学习参数的层(如全连接层、卷积层等)放在构造函数__init__()中。(2)不具有可学习参数的层(如ReLU、dropout、BatchNormanation层)如果不放在构造函数__init__()里面,则在forward()方法里面可以使用nn.functional代替。(3)forward()方法是实现神经网络各层之间连接关系的核心,必须要重写。〖PPT〗演示:nn.Module类的使用。【时间】分钟。【提问】。五、Sequential类【主板书】nn.Module类Sequential继承自Module类,其相当于一个可包含多个层的容器以方便神经网络的构建。1.利用Sequential类构建简单的网络。【强化与拓展】在Sequential类实例化时将不同类型的层按指定顺序排列以作为相关参数而构建网络。2.利用Sequential类构建具有层名称的网络。【强化与拓展】在Sequential类实例化时为每个构成层指定相应的名称;此时需要导入OrderedDict库。3.利用Sequential类增量式构建具有层名称的网络。【强化与拓展】首先实例化无参Sequential对象,然后通add_module()增量式地构建相应的层。【时间】分钟。【提问】。六、Optim类【主板书】Optim类1.主要功能:更新模型参数。2.常用类型:AdaGrad、RMSProp、Adam等。【时间】分钟。【提问】。七、构建神经网络的基本步骤【主板书】构建神经网络的基本步骤利用PyTorch构建神经网络的基本步骤如下:1.定义模型:利用Sequential类或自定义类等方式定义模型结构。(1)通过Sequential类定义(2)通过定义类2.定义损失函数。3.定义优化器。4.网络训练。5.网络测试。6.保存与载入。【强化与拓展】保存与载入模型torch.save(net,file)net=torch.load(file)#只保存与载入网络模型参数(速度快,占内存少)torch.save(model.state_dict(),file)net=Model()net.load_state_dict(file)〖PPT〗演示:自定义两层神经网络。【时间】分钟。【提问】。课堂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论