当前位置: 首页 > news >正文

大学校园网站建设做网站如何接单子

大学校园网站建设,做网站如何接单子,百度网站内容,优化点击软件文章目录 回顾Google NetInception1*1卷积Inception模块的实现网络构建完整代码 ResNet残差模块 Resedual Block残差网络的简单应用残差实现的代码 练习 回顾 这是一个简单的线性的卷积神经网络 然而有很多更为复杂的卷积神经网络。 Google Net Google Net 也叫Inception V… 文章目录 回顾Google NetInception1*1卷积Inception模块的实现网络构建完整代码 ResNet残差模块 Resedual Block残差网络的简单应用残差实现的代码 练习 回顾 这是一个简单的线性的卷积神经网络 然而有很多更为复杂的卷积神经网络。 Google Net Google Net 也叫Inception V1是由Inception模块堆叠而成的卷积神经网络。 详情请见我的另一篇博客 Inception 基本思想 首先通过1x1卷积来降低通道数把信息聚集再进行不同尺度的特征提取以及池化得到多个尺度的信息最后将特征进行叠加输出官方说法可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能 主要过程在3x3卷积和5x5卷积前面、3x3池化后面添加1x1卷积将信息聚集且可以有效减少参数量称为瓶颈层下一层block就包含1x1卷积3x3卷积5x5卷积3x3池化(使用这样的尺寸不是必需的可以根据需要进行调整)。这样网络中每一层都能学习到“稀疏”3x3、5x5或“不稀疏”1x1的特征既增加了网络的宽度也增加了网络对尺度的适应性通过按深度叠加deep concat在每个block后合成特征获得非线性属性。注在进行卷积之后都需要进行ReLU激活这里默认未注明。 1*1卷积 1*1卷积卷积核大小为1的卷积主要用于改变通道数而不会改变特征图W、H。也可以用于进行特征融合。在执行计算昂贵的 3 x 3 卷积和 5 x 5 卷积前往往会使用 1 x 1 卷积来减少计算量。 Inception模块的实现 注意只有所有特征图大小一样W、H一样才能进行拼接通道数可以不同。 网络构建 # design model using class class InceptionA(nn.Module):def __init__(self, in_channels):super(InceptionA, self).__init__()self.branch1x1 nn.Conv2d(in_channels, 16, kernel_size1)#1*1卷积self.branch5x5_1 nn.Conv2d(in_channels, 16, kernel_size1)#1*1卷积self.branch5x5_2 nn.Conv2d(16, 24, kernel_size5, padding2)#padding2,大小不变self.branch3x3_1 nn.Conv2d(in_channels, 16, kernel_size1)#1*1卷积self.branch3x3_2 nn.Conv2d(16, 24, kernel_size3, padding1)#padding1大小不变self.branch3x3_3 nn.Conv2d(24, 24, kernel_size3, padding1)#padding1大小不变self.branch_pool nn.Conv2d(in_channels, 24, kernel_size1)#1*1卷积def forward(self, x):branch1x1 self.branch1x1(x)branch5x5 self.branch5x5_1(x)branch5x5 self.branch5x5_2(branch5x5)branch3x3 self.branch3x3_1(x)branch3x3 self.branch3x3_2(branch3x3)branch3x3 self.branch3x3_3(branch3x3)branch_pool F.avg_pool2d(x, kernel_size3, stride1, padding1)branch_pool self.branch_pool(branch_pool)outputs [branch1x1, branch5x5, branch3x3, branch_pool]return torch.cat(outputs, dim1) # b,c,w,h c对应的是dim1class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 nn.Conv2d(1, 10, kernel_size5)self.incep1 InceptionA(in_channels10) # 与conv1 中的10对应self.conv2 nn.Conv2d(88, 20, kernel_size5) # 88 24x3 16self.incep2 InceptionA(in_channels20) # 与conv2 中的20对应self.mp nn.MaxPool2d(2)self.fc nn.Linear(1408, 10)#140888*4*4是x展开之后的值其实可以不用自己计算def forward(self, x):in_size x.size(0)x F.relu(self.mp(self.conv1(x)))#W、H12x self.incep1(x)x F.relu(self.mp(self.conv2(x)))#W、H4x self.incep2(x)x x.view(in_size, -1)x self.fc(x)return x完整代码 import numpy as np import torch import torch.nn as nn from matplotlib import pyplot as plt from torchvision import transforms from torchvision import datasets from torch.utils.data import DataLoader import torch.nn.functional as F import torch.optim as optim# prepare datasetbatch_size 64 transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) # 归一化,均值和方差train_dataset datasets.MNIST(rootdataset, trainTrue, downloadTrue, transformtransform) train_loader DataLoader(train_dataset, shuffleTrue, batch_sizebatch_size) test_dataset datasets.MNIST(rootdataset, trainFalse, downloadTrue, transformtransform) test_loader DataLoader(test_dataset, shuffleFalse, batch_sizebatch_size)# design model using class class InceptionA(nn.Module):def __init__(self, in_channels):super(InceptionA, self).__init__()self.branch1x1 nn.Conv2d(in_channels, 16, kernel_size1)#1*1卷积self.branch5x5_1 nn.Conv2d(in_channels, 16, kernel_size1)#1*1卷积self.branch5x5_2 nn.Conv2d(16, 24, kernel_size5, padding2)#padding2,大小不变self.branch3x3_1 nn.Conv2d(in_channels, 16, kernel_size1)#1*1卷积self.branch3x3_2 nn.Conv2d(16, 24, kernel_size3, padding1)#padding1大小不变self.branch3x3_3 nn.Conv2d(24, 24, kernel_size3, padding1)#padding1大小不变self.branch_pool nn.Conv2d(in_channels, 24, kernel_size1)#1*1卷积def forward(self, x):branch1x1 self.branch1x1(x)branch5x5 self.branch5x5_1(x)branch5x5 self.branch5x5_2(branch5x5)branch3x3 self.branch3x3_1(x)branch3x3 self.branch3x3_2(branch3x3)branch3x3 self.branch3x3_3(branch3x3)branch_pool F.avg_pool2d(x, kernel_size3, stride1, padding1)branch_pool self.branch_pool(branch_pool)outputs [branch1x1, branch5x5, branch3x3, branch_pool]return torch.cat(outputs, dim1) # b,c,w,h c对应的是dim1class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 nn.Conv2d(1, 10, kernel_size5)self.incep1 InceptionA(in_channels10) # 与conv1 中的10对应self.conv2 nn.Conv2d(88, 20, kernel_size5) # 88 24x3 16self.incep2 InceptionA(in_channels20) # 与conv2 中的20对应self.mp nn.MaxPool2d(2)self.fc nn.Linear(1408, 10)#140888*4*4是x展开之后的值其实可以不用自己计算def forward(self, x):in_size x.size(0)x F.relu(self.mp(self.conv1(x)))#W、H12x self.incep1(x)x F.relu(self.mp(self.conv2(x)))#W、H4x self.incep2(x)x x.view(in_size, -1)x self.fc(x)return xmodel Net()device torch.device(cuda:0 if torch.cuda.is_available() else cpu) #定义device如果有GPU就用GPU否则用CPUmodel.to(device) # 将所有模型的parameters and buffers转化为CUDA Tensor.criteriontorch.nn.CrossEntropyLoss() optimizertorch.optim.SGD(model.parameters(),lr0.01,momentum0.5) def train(epoch):running_loss0.0for batch_id,data in enumerate(train_loader,0):inputs,targetdatainputs,targetinputs.to(device),target.to(device)#将数据送到GPU上optimizer.zero_grad()# forward backward updateoutputsmodel(inputs)losscriterion(outputs,target)loss.backward()optimizer.step()running_loss loss.item()if batch_id% 300299:print([%d,%5d] loss: %.3f % (epoch1,batch_id,running_loss/300))running_loss0.0accracy [] def test():correct0total0with torch.no_grad():for data in test_loader:inputs,targetdatainputs,targetinputs.to(device),target.to(device)#将数据送到GPU上outputsmodel(inputs)predictedtorch.argmax(outputs.data,dim1)totaltarget.size(0)correct(predictedtarget).sum().item()print(Accuracy on test set : %d %% [%d/%d]%(100*correct/total,correct,total))accracy.append([100*correct/total])if __name__ __main__:for epoch in range(10):train(epoch)test()xnp.arange(10)plt.plot(x, accracy)plt.xlabel(Epoch)plt.ylabel(Accuracy)plt.grid()plt.show() 训练结果 ResNet 卷积层是不是越多越好 在CIFAR数据集上利用20层卷积和56层卷积进行训练56层卷积的loss还要大一些。这是因为网络层数太多可能会出现梯度消失和梯度爆炸。梯度消失和梯度爆炸是在反向传播计算梯度时梯度太小或者太大随着网络层数不断加深梯度值是呈现指数增长变得趋近于0或者很大。比如说 0. 4 n 0.4^n 0.4n,n100时值就已结很小了比如说 1. 5 n 1.5^n 1.5nn100时也非常大了。 残差模块 Resedual Block **残差连接 **很简单就是一个跳连接将输入X和卷积之后的特征图相加就行了,即yxf(x)。相加需要两个特征图的大小和通道数都一样。可以获得更丰富的语义特征避免梯度消失和爆炸。非常常用是必须学会的一个小技巧。 残差连接可以跨层进行跳连接发挥创造力炼丹吧 残差网络的简单应用 残差实现的代码 class ResidualBlock(torch.nn.Module):def __init__(self,channels):super(ResidualBlock,self).__init__()self.channelschannelsself.conv1torch.nn.Conv2d(channels,channels,kernel_size3,padding1)#保证输出输入通道数都一样self.conv2torch.nn.Conv2d(channels,channels,kernel_size3,padding1)self.conv3torch.nn.Conv2d(channels,channels,kernel_size1)def forward(self,x):yF.relu(self.conv1(x))yself.conv2(y)return F.relu(xy)接下来笔交给你了 我的训练结果 Accuracy on test set : 98 % [9872/10000] [7, 299] loss: 0.027 [7, 599] loss: 0.032 [7, 899] loss: 0.032 Accuracy on test set : 98 % [9874/10000] [8, 299] loss: 0.028 [8, 599] loss: 0.026 [8, 899] loss: 0.026 Accuracy on test set : 99 % [9901/10000] [9, 299] loss: 0.022 [9, 599] loss: 0.025 [9, 899] loss: 0.027 Accuracy on test set : 99 % [9900/10000] [10, 299] loss: 0.024 [10, 599] loss: 0.019 [10, 899] loss: 0.027 Accuracy on test set : 98 % [9895/10000] 练习 请实现以下两种残差结构并用他们构建网络跑模型。
http://www.pierceye.com/news/168839/

相关文章:

  • 模板建站教程网站建设公司特色
  • 广州网站设计制作江门住房与城乡建设局官方网站
  • 电子商城网站建设参考文献新手建立企业网站流程
  • 站长工具使用wordpress搜索框制作教程
  • 上海翼成信息科技有限公司做的什么网站怎么办一个网站
  • 上海网站建设的英文wordpress login 图标
  • 雅安市网站建设搭建网站工具
  • 网站如何做301重定向南宁一站网 给网站做营销
  • 网站 使用的字体女生电子商务专业适合做什么
  • 电商网站首页模板连云港 网站 建设
  • 自助建站广告发布企业年检网上申报流程
  • 河北平台网站建设价位外包网站有哪些
  • 做网站客户需要提供的资料梧州网站建设推荐
  • 网站商城建设实训心得网络推广有用吗
  • 考试网站建设房价2024年暴跌
  • 北京网站seo价格建设教育培训的网站
  • 怎样做网站手机和电脑通用木马工业设计公司
  • 榆林市建设局官方网站ppt中网站布局图怎么做
  • 网站视频插件代码如何创建自己的软件
  • 如何免费建造网站电商网站建设哪家好
  • ps做网站首页设计教程郑州seo优化外包热狗网
  • 给网站增加功能怎么做360搜索关键词优化软件
  • 如何做公司网站空间南昌做网站的公司哪个比较好的
  • 美容网站开发网络营销的功能有哪些
  • 推广自己的网站需要怎么做做政协网站的目的是什么
  • 综合性电子商务网站有哪些商城系统软件开发
  • 网站服务器解决方案企业门户网站管理要求
  • 南京网站开发南京乐识专注岳阳网站建设网站
  • 做一直播网站要多少钱淘宝客如何建设推广网站
  • 网站模板内容怎么添加图片不显示菏泽做网站