深度学习基础与实践 教案4.5任务实施(操作参考)_第1页
深度学习基础与实践 教案4.5任务实施(操作参考)_第2页
深度学习基础与实践 教案4.5任务实施(操作参考)_第3页
深度学习基础与实践 教案4.5任务实施(操作参考)_第4页
深度学习基础与实践 教案4.5任务实施(操作参考)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

.5任务实施:Pytorch神经网络搭建4.5.1任务书人工神经网络(ArtificialNeuralNetworks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(ConnectionModel),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。在这里我们初始化的神经网络模型为卷积层→Relu层→池化层→全连接层→Relu层→全连接层。本次实验的主要任务是使用四种不同的方法构建神经网络并输出。4.5.2任务分组表4-10学生任务分配表班级组号指导老师组长学号成员数量组长任务组员姓名学号任务分工4.5.3获取信息引导问题1:神经网络是深度学习的核心知识,也是人工智能领域必不可少的学习环节。查阅资料,了解神经网络的起源、定义和理论基础。神经网络的起源:神经网络是一种计算模型,它被设计用于模拟人脑的神经网络,在进行模式识别、分类、数据挖掘等任务时具有很强的能力。神经网络的起源可以追溯到20世纪40年代和50年代,当时WarrenMcCulloch和WalterPitts提出了一个基于数学模型的神经元之间连接方式的理论,开创了神经网络研究的先河。这个早期的神经网络模型被称为“McCulloch-Pitts神经元模型”,它的结构非常简单,只包括一个二值输入和一个输出,但是这个模型揭示了大脑神经元之间的联系,奠定了现代神经网络的基础。1960年代,FrankRosenblatt提出了感知机模型,它是第一个带有学习功能的神经网络模型。感知机模型使用了类似于McCulloch-Pitts模型的结构,但加入了权重和偏置,并使用梯度下降等方法进行训练。感知机模型在当时受到了广泛的关注,但由于其局限性,如不能解决异或问题等,导致其发展受到限制。1980年代晚期,随着BP算法的出现,神经网络得到了renewedinterest,这个算法解决了神经网络在训练过程中遇到的梯度消失和梯度爆炸问题,在深层神经网络的训练中发挥了关键作用。随后,随着计算硬件和数据量的增加,神经网络的应用范围不断扩大,如语音识别、图像处理、自然语言处理等,神经网络已成为机器学习中不可或缺的一部分。神经网络的定义:人工神经网络(ArtificialNeuralNetworks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(ConnectionModel),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。神经网络的理论基础:神经网络的理论基础是由神经元和它们之间的连接构成的。每个神经元都有一个或多个输入,这些输入被加权并传递到激活函数中,计算得出输出值。这个输出值又可以作为下一个神经元的输入,构成复杂的网络结构。这种“学习机器”可以在训练过程中调整权重和偏差,以最小化模型对于训练数据的预测误差。常见的神经网络包括前馈神经网络、卷积神经网络和循环神经网络等。4.5.4工作实施引导问题2:按照操作手册的步骤创建实验检测路径及文件。双击桌面的“pycharm”软件在桌面建立工程文件,命名为“test5”,我们创建的py文件就会保存在这个路径里面,接着在此文件下创建Python文件“Network.py”,我们的代码撰写在此文件中。该文件路径为“/home/techuser/Desktop/test5/Network.py”。引导问题3:查看相关资料,掌握创建神经网络的第一种方法。请详述并补充完整通用解法步骤,在软件中编写代码,记录出现的问题及解决的方法。创建神经网络第一种方法的步骤如下(叙述方式描述如步骤1和2这样描述):步骤1:导入相关依赖包,如torch和torch.nn.functional的导入代码:importtorchimporttorch.nn.functionalasF步骤2:定义神经网络模型类,类名取为Net1并继承torch.nn.Module类。代码为:classNet1(torch.nn.Module):步骤3:对类中的__init__()函数进行重写,__init__()函数中主要是初始化一些内部需要用到的神经网络状态信息。在其中初始化具有可学习参数的层,如全连接层,卷积层。代码为:def__init__(self):super(Net1,self).__init__()self.conv1=torch.nn.Conv2d(3,32,3,1,1)self.dense1=torch.nn.Linear(32*3*3,128)self.dense2=torch.nn.Linear(128,10)步骤4:定义forward()函数,表示在建立模型后,进行神经元网络的前向传播。在重写后的forward()函数中,数据x首先进入卷积层conv1进行处理,处理后的数据在经过Relu层的relu函数处理,接着池化层处理数据,然后将数据变为2维,最后经过relu函数以及两层全连接层处理得到最后的结果。defforward(self,x):x=F.max_pool2d(F.relu(self.conv1(x)),2)x=x.view(x.size(0),-1)x=F.relu(self.dense1(x))x=self.dense2()returnx步骤5:实例化神经网络模型并打印输出。print("Method1:")model1=Net1()print(model1)出现的问题及解决的方法:学生根据出现的问题进行记录引导问题4:查看相关资料,掌握创建神经网络的第二种方法。基于第一种创建神经网络的方法,归纳第二种方法的核心步骤和核心代码,并记录出现的问题及解决的方法。创建神经网络第二种方法:第二种方法同样是对torch.nn.Module类的重载,不过这种方法利用torch.nn.Sequential()容器进行快速搭建,模型的各层被顺序添加到容器中。核心代码:classNet2(torch.nn.Module):def__init__(self):super(Net2,self).__init__()self.conv=torch.nn.Sequential(torch.nn.Conv2d(3,32,3,1,1),torch.nn.ReLU(),torch.nn.MaxPool2d(2))self.dense=torch.nn.Sequential(torch.nn.Linear(32*3*3,128),torch.nn.ReLU(),torch.nn.Linear(128,10))defforward(self,x):conv_out=self.conv(x)res=conv_out.view(conv_out.size(0),-1)out=self.dense(res)returnout出现的问题及解决的方法:学生根据出现的问题进行记录引导问题5:查看相关资料,掌握创建神经网络的第三、第四种方法,完成核心步骤代码书写并记录出现的问题及解决的方法。创建神经网络第三种方法:第三种方法是对第二种方法的改进:通过add_module()添加每一层,并且为每一层增加了一个单独的名字,其他的方面与第二种方法一样。核心代码为:classNet3(torch.nn.Module):def__init__(self):super(Net3,self).__init__()self.conv=torch.nn.Sequential()self.conv.add_module("conv1",torch.nn.Conv2d(3,32,3,1,1))self.conv.add_module("relu1",torch.nn.ReLU())self.conv.add_module("pool1",torch.nn.MaxPool2d(2))self.dense=torch.nn.Sequential()self.dense.add_module("dense1",torch.nn.Linear(32*3*3,128))self.dense.add_module("relu2",torch.nn.ReLU())self.dense.add_module("dense2",torch.nn.Linear(128,10))defforward(self,x):conv_out=self.conv1(x)res=conv_out.view(conv_out.size(0),-1)out=self.dense(res)returnout创建神经网络第四种方法:第四种方法是第三种方法的另外一种写法,通过字典的形式添加每一层,并且设置单独的层名称,使代码更具有可读性。核心代码为:fromcollectionsimportOrderedDictclassNet4(torch.nn.Module):def__init__(self):super(Net4,self).__init__()self.conv=torch.nn.Sequential(OrderedDict([("conv1",torch.nn.Conv2d(3,32,3,1,1)),("relu1",torch.nn.ReLU()),("pool",torch.nn.MaxPool2d(2))]))self.dense=torch.nn.Sequential(OrderedDict([("dense1",torch.nn.Linear(32*3*3,128)),("relu2",torch.nn.ReLU()),("dense2",torch.nn.Linear(128,10))]))defforward(self,x):conv_out=self.conv1(x)res=conv_out.view(conv_out.size(0),-1)out=self.dense(res)returnout出现的问题及解决的方法:学生根据出现的问题进行记录引导问题6:比较四种神经网络创建方式的不同,归纳优缺点,选择适合自己的一种创建方法。比较四种神经网络创建方式的异同:第一种构建方法是模型构建的基本结构,包含了类之间的继承,__init__()函数和forward()函数。代码较为简单易懂,但是初始化过程不够规整。第二种构建方法利用torch.nn.Sequential()容器进行快速搭建,整个初始化过程十分的规整,缺点是每层的编号是默认的阿拉伯数字,不易区分。第三种构建方法通过add_module()添加每一层,并且为每一层增加了一个单独的名字,避免了第二种方法的缺点,但是代码编写更加繁琐。第四种构建方法与第三种构建方法类似,通过字典的形式添加每一层,并且设置单独的层名称。选择适合自己的一种创建方式:学生根据自己的喜好进行选择并记忆。4.5.5评价反馈全面考核学生的专业能力和关键能力,采用过程性评价和结果评价相结合,定性评价与定量评价相结合的考核方法。注重学生动手能力和在实践中分析问题、解决问题能力的考核,在学习和应用上有创新的学生给予特别鼓励。表4-11考核评价表 内容目标方式权重

温馨提示

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

评论

0/150

提交评论