版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深度学习第5章多层全连接神经网络5.1全连接神经网络(FC)5.2多分类问题5.3softmax与交叉熵5.4反向传播算法5.5计算机视觉工具包:torchvision25.6用全连接神经网络实现多分类课上练习第5章多层全连接神经网络5.1全连接神经网络(FC)全连接神经网络的准则很简单:神经网络中除输入层之外的每个节点都和上一层的所有节点有连接。3图5.1全连接神经网络示意图网络是几层?输出层有几个神经元?课堂练习(1)写出下面网络有
层,有
层隐藏层,输入层有
个神经元,输出层有
个神经元。答案:3、2、3、1多层全连接神经网络的作用?图像分类、目标检测、自然语言处理等如何用多层神经网络解决多分类问题?5第5章多层全连接神经网络5.2多分类问题6第5章多层全连接神经网络
图5.2单神经元工作原理5.2多分类问题7第5章多层全连接神经网络如何用图示表示?先看单个神经元在分类问题中的应用。
5.2多分类问题8第5章多层全连接神经网络??
图5.3代入数据的神经元5.2多分类问题9第5章多层全连接神经网络?
图5.3代入数据的神经元5.2多分类问题10第5章多层全连接神经网络
图5.3代入数据的神经元5.2多分类问题11第5章多层全连接神经网络多个图5.4中的神经元组合成的多层神经网络,如图5.5所示。图5.5多层神经网络5.2多分类问题12第5章多层全连接神经网络????????将图5.5神经网络模型元实例化,各值如图5.6所示。图5.6实例化的多层神经网络5.2多分类问题13第5章多层全连接神经网络??????将图5.5神经网络模型元实例化,各值如图5.6所示。图5.6实例化的多层神经网络5.2多分类问题14第5章多层全连接神经网络????将图5.5神经网络模型元实例化,各值如图5.6所示。图5.6实例化的多层神经网络5.2多分类问题15第5章多层全连接神经网络??将图5.5神经网络模型元实例化,各值如图5.6所示。图5.6实例化的多层神经网络5.2多分类问题16第5章多层全连接神经网络将图5.5神经网络模型元实例化,各值如图5.6所示。图5.6实例化的多层神经网络5.2多分类问题17第5章多层全连接神经网络将图5.5神经网络模型元实例化,各值如图5.6所示。图5.6实例化的多层神经网络5.3softmax与交叉熵softmax函数,又称归一化指数函数。它是二分类函数。Sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。18第5章多层全连接神经网络
5.3softmax与交叉熵19第5章多层全连接神经网络??????图5.7softmax函数示意图5.3softmax与交叉熵20第5章多层全连接神经网络图5.7softmax函数示意图5.3softmax与交叉熵21第5章多层全连接神经网络图5.8分类数字的多层网络示意图5.3softmax与交叉熵交叉熵是用来衡量两个概率分布的距离。交叉熵数值越小说明两个概率分布越接近。概率分布:即[0.1,0.5,0.2,0.1,0.1],每个类别的概率都在0-1,且加起来为1。若有两个概率分布p(x)和q(x),通过q来表示p的交叉熵为:22第5章多层全连接神经网络5.3softmax与交叉熵假设有一个三分类问题,某个样本的真实分类结果是(1,0,0),第一个模型经过Softmax函数之后的预测结果是(0.5,0.4,0.1),那么它们的交叉熵为:
另一个模型的预测结果为:(0.8,0.1,0.1),则它们的交叉熵为?请同学们计算。
23第5章多层全连接神经网络在后面的代码实现中,我们将用交叉熵定义损失函数(criterion=nn.CrossEntropyLoss())下一页5.4反向传播算法5.4.1链式法则24第5章多层全连接神经网络首先介绍一下链式法则,考虑一个简单的函数,比如:当然可以直接求出这个函数的微分,但是这里我们要使用链式法则,令:那么f=qz对于这两个式子,可以分别求出它们的微分:同时q是x和y的求和,所以能够得到:5.4反向传播算法5.4.1链式法则25第5章多层全连接神经网络我们关心的问题是:链式法则则告诉我们如何来计算出他们的值:5.4反向传播算法5.4.2反向传播实例26第5章多层全连接神经网络了解了链式法则,我们就可以开始介绍反向传播算法了,本质上反向传播算法只是链式法则的一个应用。仍然使用5.4.1中的那个例子:q=x+y,f=qz。在一个计算图中,输入是x=-2,y=5,z=-4,计算为q=x+y,通过计算图可以将这个计算过程表达出来,如图5.9所示。图5.9计算图5.4反向传播算法5.4.2反向传播实例27第5章多层全连接神经网络上面的数字表示其数值,下面的数字表示求出的梯度,可以一步一步看看反向传播算法的实现。首先从最后开始,梯度当然是1,然后计算接着计算
5.5计算机视觉工具包:torchvisiontorchvision主要包含以下三部分:models、datasets、transforms。models:提供深度学习中各种经典网络结构及预训练好的模型,包括AlexNet、VGG系列、ResNet系列、Inception系列等。datasets:提供常用的数据集下载,设计上都是继承torch.utils.data.Dataset,主要包括MNIST、CIFAR10/100、ImageNet、COCO等。28第5章多层全连接神经网络5.5计算机视觉工具包:torchvisiontransforms:提供常用的数据预处理操作,主要包括对Tensor及PILImage对象的操作。transforms中涵盖了大部分对Tensor和PILImage的常用处理。对PILImage的操作包括:(1)Scale:调整图片尺寸,长宽比保持不变。(2)CenterCrop、RandomCrop、RandomResizedCrop:裁剪图片。(3)Pad:填充。(4)ToTensor:将PILImage对象转成Tensor,会自动将[0,255]归一化至[0,1]。对Tensor的操作包括:(1)Normalize:标准化(减均值,除以标准差)。(2)ToPILImage:将Tensor转为PILImage对象。29第5章多层全连接神经网络5.5计算机视觉工具包:torchvisiontorchvision还提供了两个常用的函数。一个是make_grid,它能将多张图片拼接成一个网格中。
另一个是save_img,它能将Tensor保存成图片。30第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.1定义网络我们从最简单的网络建起,然后建立一个加入激励函数的网络,最后建立一个加入批标准化函数的网络。31第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字
MNIST数据集
训练集(trainingset)由来自250个不同人手写的数字构成,其中50%是高中学生,50%来自人口普查局(theCensusBureau)的工作人员,一共有60000张图片。测试集(testset)也是同样比例的手写数字数据,一共有10000张图片。。32第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字
33第5章多层全连接神经网络图5.11MNIST数据集举例5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第一步:导入要用的包、定义超参数,比如训练中每批多少图片(batch_size),学习率(learning_rate),迭代次数numepoches。第二步:定义带有激活函数和批标准化的网络。第三步:对数据进行标准化预处理。第四步:下载MNIST数据集。第五步:导入网络、定义损失函数和优化方法。第六步:训练网络模型第七步:测试网络34第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字建立最简单的网络,将其命名为simpleNet。fromtorchimportnnclasssimpleNet(nn.Module):#定义一个最简单的三层全连接神经网络,每一层都是线性的def__init__(self,in_dim,n_hidden_1,n_hidden_2,out_dim):super(simpleNet,self).__init__()self.layer1=nn.Linear(in_dim,n_hidden_1)self.layer2=nn.Linear(n_hidden_1,n_hidden_2)self.layer3=nn.Linear(n_hidden_2,out_dim)defforward(self,x):x=self.layer1(x)x=self.layer2(x)x=self.layer3(x)returnx35第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字改进一下simpleNet网络,添加激励函数,增强网络的非线性,将新网络命名为Activation_Net。fromtorchimportnnclassActivation_Net(nn.Module):#在上面的simpleNet网络的基础上,在每层的输出部分添加激励函数def__init__(self,in_dim,n_hidden_1,n_hidden_2,out_dim):
super(Activation_Net,self).__init__()self.layer1=nn.Sequential(nn.Linear(in_dim,n_hidden_1),nn.ReLU(True))self.layer2=nn.Sequential(nn.Linear(n_hidden_1,n_hidden_2),nn.ReLU(True))self.layer3=nn.Sequential(nn.Linear(n_hidden_2,out_dim))#这里的nn.Sequential()函数的功能是将网络的层组合到一起defforward(self,x):x=self.layer1(x)x=self.layer2(x)x=self.layer3(x)returnx36第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字最后,增加一个加快收敛速度的函数——批标准化函数,将新网络命名为Batch_Net。fromtorchimportnnclassBatch_Net(nn.Module):#在上面的Activation_Net网络的基础上,增加一个加快收敛速度的函数——批标准化函数def__init__(self,in_dim,n_hidden_1,n_hidden_2,out_dim):
super(Batch_Net,self).__init__()self.layer1=nn.Sequential(nn.Linear(in_dim,n_hidden_1),nn.BatchNorm1d(n_hidden_1),nn.ReLU(True))self.layer2=nn.Sequential(nn.Linear(n_hidden_1,n_hidden_2),nn.BatchNorm1d(n_hidden_2),nn.ReLU(True))self.layer3=nn.Sequential(nn.Linear(n_hidden_2,out_dim))defforward(self,x):x=self.layer1(x)x=self.layer2(x)x=self.layer3(x)returnx37第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第一步:导入包、定义超参数。超参数包括训练时每次输入多少张图片(batch_size)、学习率(learning_rate)、迭代次数(num_epoches)等。importtorchfromtorchimportnn,optimfromtorch.autogradimportVariablefromtorch.utils.dataimportDataLoaderfromtorchvisionimportdatasets,transformsbatch_size=64learning_rate=0.02num_epoches=10038第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第二步:建立带有激励函数和批标准化函数的网络。classBatch_Net(nn.Module)def__init__(self,in_dim,n_hidden_1,n_hidden_2,out_dim):super(Batch_Net,self).__init__()self.layer1=nn.Sequential(nn.Linear(in_dim,n_hidden_1),nn.BatchNorm1d(n_hidden_1),nn.ReLU(True))self.layer2=nn.Sequential(nn.Linear(n_hidden_1,n_hidden_2),nn.BatchNorm1d(n_hidden_2),nn.ReLU(True))self.layer3=nn.Sequential(nn.Linear(n_hidden_2,out_dim))defforward(self,x):x=self.layer1(x)x=self.layer2(x)x=self.layer3(x)returnx39第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第三步:对数据进行标准化预处理。data_tf=transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5],[0.5])])第四步:导入MNIST数据集。train_dataset=datasets.MNIST(root='./data',train=True,transform=data_tf,download=True)test_dataset=datasets.MNIST(root='./data',train=False,transform=data_tf)train_loader=DataLoader(train_dataset,batch_size=batch_size,shuffle=True)test_loader=DataLoader(test_dataset,batch_size=batch_size,shuffle=False)40第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第五步:导入神经网络模型,定义损失函数和优化函数。model=Batch_Net(28*28,300,100,10)#定义损失函数和优化函数criterion=nn.CrossEntropyLoss()optimizer=optim.SGD(model.parameters(),lr=learning_rate)41第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第六步:训练模型。epoch=0fordataintrain_loader:img,label=dataimg=img.view(img.size(0),-1)#这段程序以后读者会经常看到,其含义是如果有GPU,则使用iftorch.cuda.is_available():img=img.cuda()label=label.cuda()else:
42第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第六步:训练模型。else:img=Variable(img)label=Variable(label)out=model(img)loss=criterion(out,label)print_loss=loss.data.item()optimizer.zero_grad()loss.backward()optimizer.step()epoch+=1ifepoch%100==0:print('epoch:{},loss:{:.4}'.format(epoch,loss.data.item()))43第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第七步:测试模型。model.eval()eval_loss=0eval_acc=0fordataintest_loader:img,label=dataimg=img.view(img.size(0),-1)iftorch.cuda.is_available():img=img.cuda()label=label.cuda()out=model(img)loss=criterion(out,label)eval_loss+=loss.data.item()*label.size(0)_,pred=torch.max(out,1)
44第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字第七步:测试模型。num_correct=(pred==label).sum()eval_acc+=num_correct.item()print('Testloss:{:.6f},Acc:{:.6f}'.format(eval_loss/(len(test_dataset)),eval_acc/(len(test_dataset))))45第5章多层全连接神经网络5.6用全连接神经网络实现多分类5.6.2全连接识别MNIST手写数字程序运行结果如下:epoch:100,loss:0.5478epoch:200,loss:0.4439epoch:300,loss:0.2936epoch:400,loss:0.311epoch:500,loss:0.2003epoch:600,loss:0.3013epoch:700,loss:0.194epoch:800,loss:0.1538epoch:900,loss:0.1254Testloss:0.141032,Acc:0.96180046第5章多层全连接神经网络课堂练习(1)通过PyTorch内置函数torchvision.datasets.MNIST导入数据集。里面的参数download=True,代表
。答案:从Internet上下载课堂练习(2)softmax函数,又称
函数。它是二分类函数Sigmoid在多分类上的推广,目的是
。答案:归一化指数、将多分类的结果以概率的形式展现出来课堂练习(3)transforms.ToTensor()将图片转换成PyTorch中处理的对象Tensor,并且进行
。答案:标准化(数据在0~1之间)课堂练习(4)交叉熵是用来衡量两个
的距离(也可以叫差别)。答案:概率分布课堂练习答案:C课堂练习(2)以下不是torchvision中的一部分的是:()。A.torchvision.datasetsB.torchvision.modelsC.torchvision.transformsD.torchvision.matplotlib答案:D课堂练习(3)torchvision提供了一个常用的函数
,能将多张图片拼接在一个网格中。A.make_grid()B.make_gether()C.gether_grid()D.made_grid()答案:A课堂练习(4)PILImage的操作不包括()。A.调整图片尺寸B.填充C.将PILImage对象转成TensorD.格式化答案:D课堂练习(5)torchvision提供的save_img作用是()。A.将多张图片拼接在一个网格中。B.将Tensor保存成图片C.把图片保存成numpy数据D..将Tensor保存成numpy数据答案:BThankYou!深度学习第6章卷积神经网络6.1深度前馈网络6.2全连接网络和卷积神经网络6.3卷积神经网络原理6.4卷积层6.5池化层586.6CNN架构6.7经典CNN-LeNet56.8经典CNN-VGGNet6.9经典CNN-ResNet课上练习59第6章卷积神经网络第6章卷积神经网络20世纪80年代全连接网络提出的时候计算机硬件是什么状况?60微博网友爆出80年代的报纸电脑配置亮了!从图中可以看到,最新到货、最右价格的SUPERPC机由中科院计算机中心公司销售,配置:单显:756*380,内存:640K、软驱:360K*2、接口:一串一并,售价6480元。第6章卷积神经网络第五章实验:设计一个五层全连接神经网络,实现给MNIST数据集分类。其中:batch_size=32,learning_rate=0.01,epochs=100,input_size=28*28,hidden_size1=400,hidden_size2=300,hidden_size3=200,hidden_size4=100。隐藏层中要带有激励函数ReLU()和批标准化函数。要表达这样一个很小的神经网络需要的权重个数?784×400+400×300+300×200+200×100+100×10=520200个。如果每个权重用4字节的浮点数表示,网络占的内存空间大小?这些权重会占用2080800字节,约1.98MB超出了同一时代的计算机内存容量。第6章卷积神经网络6.1全连接网络和卷积神经网络图6.2卷积神经网络、全连接神经网络对比图62立体结构平面结构结构区别?第6章卷积神经网络6.2深度前馈网络卷积神经网络(ConvolutionalNeuralNetwork,CNN)和循环神经网络(RecurrentNeuralNetwork,RNN)都是前馈神经网络的一种。在前馈神经网络中,不同的神经元属于不同的层,每一层的神经元可以接收上一层的神经元信号,并产生信号输出到下一层。第0层叫做输入层,最后一层叫做输出层,中间的叫做隐藏层,整个网络中无反馈,信号从输入层到输出层单向传播,可用一个有向无环图表示。
63
卷积神经网络成功的原因在于其采用的局部连接和权值共享的方式,一方面减少了权值的数量,使得网络易于优化,另一方面降低了模型的复杂度,也就是减小了过拟合的风险。第6章卷积神经网络6.3卷积神经网络原理64第6章卷积神经网络6.3卷积神经网络原理65卷积层池化层全连接层卷积层怎么识别这些图像局部呢?第6章卷积神经网络6.3卷积神经网络原理卷积神经网络的三个思想根源如下:1、局部性:是指通过检测图片中的局部特征来决定图片的类别。66比如:要检测下图中是不是鸟,通常会检测“是否有鸟嘴”这个特征。第6章卷积神经网络6.3卷积神经网络原理卷积神经网络的三个思想根源如下:2、相同性:是指检测不同的图片是否具有相同的特征,虽然这些特征可能会出现在不同的位置上。67第6章卷积神经网络6.3卷积神经网络原理卷积神经网络的三个思想根源如下:3、不变性:不变性是指对一张图片进行下采样时,图片的性质基本保持不变。68第6章卷积神经网络6.4卷积层如何工作?69第6章卷积神经网络6.4卷积层如何工作?70卷积核卷积课堂练习6.4卷积层71卷积就是做滤波器和输入图像的矩阵内积操作,如图6.6所示:课堂练习6.4卷积层72卷积就是做滤波器和输入图像的矩阵内积操作,如图6.6所示:-2第6章卷积神经网络6.4卷积层在卷积中要设定的参数:1.滤波器的长宽高2.步长:步长表示滤波器每次移动的距离。3.边界填充:在图片卷积操作之前,沿着图片边缘用0进行边界填充。73
课堂练习6.4卷积层74当输入图片的尺寸为5×5×3,滤波器尺寸为3×3,步长为1,边界填充的大小为0时,计算出输出图片的尺寸为
。输出图片的尺寸:3×3×3
课堂练习6.4卷积层75卷积层代码的实现:卷积在PyTorch中通常采用torch.nn.Conv2d()函数实现。【例6.1】卷积层的代码实现。importnumpyasnpimporttorchfromtorchimportnnfromtorch.autogradimportVariablefromPILimportImageimportmatplotlib.pyplotaspltimportpylabim=Image.open('./dog.jpg').convert('L')#读入一张灰度图片im=np.array(im,dtype='float32')#将其转换为一个矩阵#可视化图片课堂练习6.4卷积层76卷积层代码的实现:卷积在PyTorch中通常采用torch.nn.Conv2d()函数实现。【例6.1】卷积层的代码实现。plt.imshow(im.astype('uint8'),cmap='gray')pylab.show()#将图片矩阵转换为PyTorch中的Tensor,并适配卷积输入的要求im=torch.from_numpy(im.reshape((1,1,im.shape[0],im.shape[1])))#使用nn.Conv2d()函数conv1=nn.Conv2d(1,1,3,bias=False)#定义卷积sobel_kernel=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]],dtype='float32')#定义轮廓检测算子sobel_kernel=sobel_kernel.reshape((1,1,3,3))#适配卷积的输入/输出conv1.weight.data=torch.from_numpy(sobel_kernel)#给卷积的卷积核赋值edge1=conv1(Variable(im))#作用在图片上edge1=edge1.data.squeeze().numpy()#将输出转换为图片的格式plt.imshow(edge1,cmap='gray')pylab.show()同学运行程序第6章卷积神经网络6.5池化层池化层的作用有:1.特征降维,避免过拟合2.空间不变性:池化层能在图片空间变化(旋转、压缩、平移)时而保证其特征不变。
3.减少参数,降低训练难度。77第6章卷积神经网络6.5池化层2种不同的池化过程:78图6.9最大池化(max-pooling)第6章卷积神经网络6.5池化层2种不同的池化过程:79图6.10平均池化(mean-pooling)第6章卷积神经网络6.5池化层80在PyTorch中常用nn.MaxPool2d()函数实现最大池化处理。【例6.2】nn.MaxPool2d()函数的使用。importnumpyasnpimporttorchfromtorchimportnnfromtorch.autogradimportVariablefromPILimportImageimportmatplotlib.pyplotaspltimportpylabim=Image.open('./dog.jpg').convert('L')#读入一张灰度图片im=np.array(im,dtype='float32')#将其转换为一个矩阵#可视化图片plt.imshow(im.astype('uint8'),cmap='gray')pylab.show()第6章卷积神经网络6.5池化层81#将图片矩阵转换为PyTorch中的Tensor,并适配卷积输入的要求im=torch.from_numpy(im.reshape((1,1,im.shape[0],im.shape[1])))pool1=nn.MaxPool2d(2,2)print('beforemaxpool,imageshape:{}x{}'.format(im.shape[2],im.shape[3]))small_im1=pool1(Variable(im))small_im1=small_im1.data.squeeze().numpy()print('aftermaxpool,imageshape:{}x{}'.format(small_im1.shape[0],small_im1.shape[1]))plt.imshow(small_im1,cmap='gray')pylab.show()第6章卷积神经网络6.6CNN架构卷积神经网络主要有卷积层、激活函数、池化层、全连接层。82第6章卷积神经网络6.6卷积神经网络的代码实现83下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。代码如下:importtorchfromtorchimportnn,optimfromtorch.autogradimportVariablefromtorch.utils.dataimportDataLoaderfromtorchvisionimportdatasets,transforms#定义一些超参数batch_size=64learning_rate=0.02num_epoches=20"""数据预处理。transforms.ToTensor()函数将图片转换成PyTorch中的Tensor,并且进行归一化(0~1之间)""""""transforms.Normalize()函数做标准化。它进行了减均值,再除以标准差的操作。函数的两个参数分别是均值和标准差""""""transforms.Compose()函数将各种预处理的操作组合到一起"""data_tf=transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5],[0.5])])第6章卷积神经网络6.6卷积神经网络的代码实现84下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。代码如下:#数据集的下载train_dataset=datasets.MNIST(r'.\data',train=True,transform=data_tf,download=True)test_dataset=datasets.MNIST(r'.\data',train=False,transform=data_tf)train_loader=DataLoader(train_dataset,batch_size=batch_size,shuffle=True)test_loader=DataLoader(test_dataset,batch_size=batch_size,shuffle=False)classCNN(nn.Module):def__init__(self):super(CNN,self).__init__()self.layer1=nn.Sequential(nn.Conv2d(1,25,kernel_size=3),nn.BatchNorm2d(25),nn.ReLU(inplace=True))第6章卷积神经网络6.6卷积神经网络的代码实现85下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。
self.layer2=nn.Sequential(nn.MaxPool2d(kernel_size=2,stride=2))self.layer3=nn.Sequential(nn.Conv2d(25,50,kernel_size=3),nn.BatchNorm2d(50),nn.ReLU(inplace=True))self.layer4=nn.Sequential(nn.MaxPool2d(kernel_size=2,stride=2))self.fc=nn.Sequential(nn.Linear(50*5*5,1024),nn.ReLU(inplace=True),nn.Linear(1024,128),nn.ReLU(inplace=True),nn.Linear(128,10))第6章卷积神经网络6.6卷积神经网络的代码实现86下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。defforward(self,x):x=self.layer1(x)x=self.layer2(x)x=self.layer3(x)x=self.layer4(x)x=x.view(x.size(0),-1)x=self.fc(x)returnx#实例化模型model=CNN()#如果有GPU,就把模型移到GPU上去iftorch.cuda.is_available():model=model.cuda()第6章卷积神经网络6.6卷积神经网络的代码实现87下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。#定义损失函数和优化函数criterion=nn.CrossEntropyLoss()optimizer=optim.SGD(model.parameters(),lr=learning_rate)#训练模型epoch=0fordataintrain_loader:img,label=dataimg=Variable(img)iftorch.cuda.is_available():img=img.cuda()label=label.cuda()else:img=Variable(img)label=Variable(label)out=model(img)loss=criterion(out,label)print_loss=loss.data.item()第6章卷积神经网络6.6卷积神经网络的代码实现88下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。optimizer.zero_grad()loss.backward()optimizer.step()epoch+=1ifepoch%50==0:print('epoch:{},loss:{:.4}'.format(epoch,loss.data.item()))#测试模型model.eval()eval_loss=0eval_acc=0fordataintest_loader:img,label=dataimg=Variable(img)iftorch.cuda.is_available():img=img.cuda()label=label.cuda()第6章卷积神经网络6.6卷积神经网络的代码实现89下面给出用一个具有三个卷积层、一个池化层、一个全连接层的卷积神经网络给MNIST数据集分类的示例。out=model(img)loss=criterion(out,label)eval_loss+=loss.data.item()*label.size(0)_,pred=torch.max(out,1)num_correct=(pred==label).sum()eval_acc+=num_correct.item()print('Testloss:{:.6f},Acc:{:.6f}'.format(eval_loss/(len(test_dataset)),eval_acc/(len(test_dataset))))第6章卷积神经网络6.7经典CNN-LeNet56.7.1LeNet-5结构90图6.14LeNet-5
结构第6章卷积神经网络6.7经典CNN-LeNet56.7.1LeNet-5结构91图6.14LeNet-5
结构3456
2345617第6章卷积神经网络6.7经典CNN-LeNet56.7.1LeNet-5结构92图6.14LeNet-5
结构第6章卷积神经网络6.7经典CNN-LeNet56.7.2CIFAR10数据库介绍CIFAR10这个数据集一共有50000张训练集,10000张测试集,两个数据集里面的图片都是png彩色图片,图片大小是32×32×3,一共是10分类问题,分别为飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。93第6章卷积神经网络6.7经典CNN-LeNet56.7.3LeNet-5代码实现94第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍95第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍CNN结构演化96第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍97第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍都用3×3?
和
5×57×7比较。98第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍99假设图片尺寸为28x28,首先,使用5x5卷积核对其进行卷积,且stride=1,得到特征图尺寸为:(28-5)/1+1=24。然后,使用2个3x3卷积核(这里的两个是指2层),stride=1,有:第一层3x3:得到的结果是(28-3)/1+1=26第二层3x3:得到的结果是(26-3)/1+1=24所以,2个3x3卷积后的最终结果和1个5x5的卷积核是一样的。②说明一下减少网络参数的作用。对于2个3x3卷积核,所用的参数总量为2x(3x3)xchannels,对于1个5x5卷积核为5x5xchannels,因此可以显著地减少参数的数量,可以减少约30%的参数数量。第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍都用3×3多,快,好
减少参数1005×5=2个3×37×7=3个3×3第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍VGG16101第6章卷积神经网络6.8经典CNN-VGGNet6.8.1VGGNet介绍VGG19102第6章卷积神经网络6.8经典CNN-VGGNet6.8.2VGGNet代码实现103VGG8第6章卷积神经网络6.9经典CNN-ResNet6.9.1ResNet介绍ResNet与普通残差网络不同之处在于,引入了跨层连接,来构造出了残差模块。使用普通的连接,上层的梯度必须要一层一层传回来,而是用残差连接,相当于中间有了一条更短的路,梯度能够从这条更短的路传回来,避免了梯度过小的情况。104第6章卷积神经网络6.9经典CNN-ResNet6.9.1ResNet介绍105退化≠过拟合第6章卷积神经网络6.9经典CNN-ResNet6.9.1ResNet介绍假定某段神经网络的输入是x,期望输出是H(x),如果直接把输入x传到输出作为初始结果,那么此时需要学习的目标就是F(x)=H(x)-x。如图6.18所示,这就是一个ResNet的残差学习单元,ResNet相当于将学习目标改变了,不再是学习一个完整的输出H(x),只是输出和输入的差别H(x)-x,即残差。106图6.18残差学习单元示意图第6章卷积神经网络6.9经典CNN-ResNet6.9.2ResNet残差107如何实现残差和将连接的网络维度匹配?第6章卷积神经网络6.9经典CNN-ResNet6.9.2ResNet残差模块代码实现108课堂练习(1)卷积神经网络的三个思想根源包括:局部性、
、
。答案:相同性、不变性课堂练习(2)典型的CNN至少由3个部分构成:
、
、全连接层。答案:卷积层、池化层课堂练习(3)输入图像=7×7,滤波器尺寸:3×3,步长设为s=1,边界填充的大小为p=1,计算出输出图像的尺寸
。答案:7×7课堂练习(4)在PyTorch中常用的最大值池化方式是
。
答案:nn.MaxPool2d()课堂练习(5)最大池化顾名思意就是在池化空间范围内取最大,平均池化顾名思意就是在池化空间范围内取
。答案:加权平均课堂练习(1)参数共享可以共享
和权重向量等。A.存储空间 B.结果C.参数D.滤波器答案:D课堂练习(2)循环神经网络属于()网络的一种。A.线性回归 B.GAN网络
C.卷积神经网络 D.深度前馈网络答案:D课堂练习(3)卷积神经网络由著名的计算机科学家
于1998年提出的。Ian
GoodfellowB.Yoshua
Bengio
C.何凯明D.YannLeCun答案:D课堂练习(4)卷积层的主要作用是:()。A.大幅降低参数量级(降维)B.用来输出想要的结果C.读入数据
D.负责提取图像中的局部特征答案:D课堂练习(5)以下不是池化层的作用是:()。A.特征降维,避免过拟合
B.空间不变性C.减少参数,降低训练难度
D.提取图像中的局部特征答案:DThankYou!深度学习第7章循环神经网络7.1前馈神经网络和循环神经网络7.2循环神经网络原理7.3长短时记忆网络课上练习121第7章循环神经网络引例1:微信对话。女朋友:哥,我手机坏了,我想要个256g的苹果。男朋友:下班给你买去。男朋友下班后,急急忙忙带着二斤苹果去约会,结果......122第7章循环神经网络引例2:翻译:Games:BeijingGames:2022BeijingWinterGames:123游戏北京比赛2022北京奥运会可见,上下文很重要!第7章循环神经网络7.1前馈神经网络和循环神经网络124图7.1前馈神经网络和神循环经网络信息流对比图第7章循环神经网络7.2循环神经网络原理循环神经网络是一类用于处理序列数据的神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。125第7章循环神经网络7.2循环神经网络原理126第7章循环神经网络7.2循环神经网络原理127第7章循环神经网络7.2循环神经网络原理由结构和公式可知,整个RNN结构共享1组(U,
W,
b),这是RNN结构最重要的特性,且每一个隐藏层神经元h的计算公式是由当前输入X与上一个隐藏层神经元的输出组成。RNN的网络结构图。左边是通常表示,右边是左边展开后的。128此时输出层的神经元公式为:第7章循环神经网络7.2循环神经网络原理图7.5双向RNN129第7章循环神经网络7.3长短时记忆网络7.3.1长短时记忆网络原理
130LSTM由4个输入和1个输出组成:1.输入:就是外界要存入记忆单元的内容。2.输入门:控制存入门的开关。3.遗忘门:控制是否清空记忆单元的开关。4.输出门:控制是否输出记忆单元的开关。5.输出:输出记忆单元的内容到其他的隐层。第7章循环神经网络7.3长短时记忆网络7.3.1长短时记忆网络原理
LSTM的内部结构:131第7章循环神经网络7.3长短时记忆网络7.3.1长短时记忆网络原理
LSTM的内部结构:132第1章深度学习基础7.3长短时记忆网络7.3.1长短时记忆网络原理
LSTM工作流程:第一步:是否遗忘上一步传来的信息。第二步:决定更新哪些信息。第三步:此步将旧细胞更新为新细胞。第四步:输出哪些信息。
133第1章深度学习基础7.3长短时记忆网络7.3.2长短时记忆网络实例1
使用两个LSTM单元学习从不同相位开始的一些正弦波信号,LSTM网络在学习了正弦波之后,试图预测未来的信号值。134第1章深度学习基础7.3长短时记忆网络7.3.2长短时记忆网络实例2这个例子是亚马逊评论的情绪分析。
135课堂练习(1)反向传播算法(BackpropagationThroughTime,BPTT)无法解决长时依赖问题,因为BPTT会带来所谓的梯度消失或
问题。答案:梯度爆炸课堂练习(2)RNN训练网络采用的反向传播算法:
。答案:随时间变化的反向传播算法(BackpropagationThroughTime,BPTT)课堂练习(3)RNN存在着的问题是梯度消失或
。答案:梯度爆炸课堂练习(4)LSTM由4个输入1个输出组成:除了和其他网络一样有输入,输出外,还有控制输入的是
,控制是否清空记忆单元的开关:
,控制是否输入记忆单元的开关:
。答案:输入门、遗忘门、输出门课堂练习(5)前向RNN即只将语句前部分的内容不断地向后一个RNN传递,但这样带来的缺陷是
。答案:位于句子后半部分的内容没法影响前半部分课堂练习(1)以下哪个不是RNN网络擅长的工作:()。A.机器写小说B.语音识别C.文本生成D.从网上爬取数据答案:D课堂练习(2)以下不是LSTM结构的是:()。A.输入门B.遗忘门C.输出门D.开关门答案:D课堂练习(3)双向RNN(BidirectionalRNN)工作过程是:()。A.先正向一次,再反向一次,将两者的存储混合,再扔入网络中在来一次。B.先反向一次,再正向一次,将两者的存储混合,再扔入网络中在来一次。C.先正向一次,再反向一次。D.在网络里随机传播。答案:A课堂练习(4)对于梯度爆炸,可以用()或挤压渐变来解决此问题。A.截断B.退化C.扩大范围D.补充答案:A课堂练习(5)Kaggle是一个什么网站()。A.开放数据集网站B.大数据数据集网站
C.论文检索网站
D.期刊网站答案:AThankYou!深度学习第8章生成式对抗网络8.1原始生成式对抗网络8.2条件生成对抗网络8.3最小二乘生成对抗网络课上练习1488章生成式对抗网络1498章生成式对抗网络1508章生成式对抗网络1518章生成式对抗网络152第8章生成式对抗网络8.1原始生成式对抗网络生成式对抗网络常用于生成以假乱真的图片。生成对抗网络模型框架中(至少)两个模块:生成模块和判别模块,它们的互相博弈学习产生相当好的输出。生成对抗网络除了生成以假乱真的图片外,还被用于生成影片、三维物体模型等。153第8章生成式对抗网络8.1原始生成式对抗网络“GAN的动物园”:条件生成式对抗网络(conditionGenerativeAdversarialNetworks,CGAN)、最小二乘生成式对抗网(LeastSquaresGenerativeAdversarialNetworks,LSGAN)、边界均衡生成式对抗网(BoundaryEquilibriumGenerativeAdversarialNetworks,BEGAN),渐进增大生成式对抗网络(progressivegrowingGenerativeAdversarialNetworks,PG-GAN)、Wasserstein对抗网络(WGAN)、循环生成式对抗网络(CycleGAN)等等。154第8章生成式对抗网络8.1原始生成式对抗网络8.1.1GAN原理GAN的目的是通过一定的方法模拟出一种数据的概率分布生成器,使得这种概率分布与某种观测数据的概率统计分布一致或尽可能接近,这个逼近真实的终点是达到纳什均衡。
纳什均衡的例子155第8章生成式对抗网络8.1原始生成式对抗网络8.1.1GAN原理156图8.1GAN络工作简单示意图
第8章生成式对抗网络8.1原始生成式对抗网络8.1.1GAN原理GAN的优化目标函数:这个式子表示的是D想办法增加V的值,G想办法减小V的值,两者在相互的对抗。怎样达到这个优化目标函数平衡点呢?下面是训练的过程:157第8章生成式对抗网络8.1原始生成式对抗网络8.1.1GAN原理GAN的优化目标函数:1.首先固定G训练D:(1)训练D的目的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省吉林市昌邑区多校2025-2026学年八年级上学期期末语文试题(含答案)
- 2026年山西运城辅警考试题库完整参考答案
- 2026年常德辅警考试题库及1套完整答案
- 2026年《中国近代史纲要》形考试题含答案(综合题)
- 2026年广元辅警招聘笔试题库及1套参考答案
- 2026年文职辅警考试测试题库及1套参考答案
- 2026年征兵言语心理测试题库(各地真题)
- 2026年刑事诉讼原理与实务模拟题题库100道带答案(满分必刷)
- 2026年土木工程师《岩土专业案例》题库100道附参考答案【夺分金卷】
- 2026年常识类党史考试题库带答案(突破训练)
- 投诉处理技巧培训
- 文物建筑勘查设计取费标准(2020年版)
- 酒店培训师基本知识培训课件
- TAIITRE10004-2023数字化转型成熟度模型
- 绍兴兴欣新材料股份有限公司新增3000ta焦磷酸哌嗪、4000ta聚氨酯发泡催化剂、5000taN-β-羟乙基乙二胺、500ta无水哌嗪项目及全厂资源循环利用技改提升项目(一期)环境影响报告书
- 安徽省水利水电工程施工招标文件示范文本(2025年版)
- T/CFDIA 007-2024再生羽绒羽毛及制品评价要求
- 2025年广东惠州市交通投资集团有限公司招聘笔试参考题库附带答案详解
- 下肢深静脉血栓护理
- 《火灾调查 第2版》 课件全套 刘玲 第1-12章 绪论、询问 -火灾物证鉴定
- 【骆驼祥子的人物形象及悲剧性浅析11000字(论文)】
评论
0/150
提交评论