网站外包建设宁波网站建设公司制作网站

张小明 2026/1/10 18:57:14
网站外包建设,宁波网站建设公司制作网站,如何做网站评估分析,wordpress 老萨描述 残差网络是现代卷积神经网络的一种#xff0c;有效的抑制了深层神经网络的梯度弥散和梯度爆炸现象#xff0c;使得深度网络训练不那么困难。 下面以cifar-10-batches-py数据集#xff0c;实现一个ResNet18的残差网络#xff0c;通过继承nn.Module实现残差块#xff0…描述残差网络是现代卷积神经网络的一种有效的抑制了深层神经网络的梯度弥散和梯度爆炸现象使得深度网络训练不那么困难。下面以cifar-10-batches-py数据集实现一个ResNet18的残差网络通过继承nn.Module实现残差块Residual Block网络模型类。定义BlockResNetBlock派生至nn.Module需要自己实现forward函数。torch.nn.Module是nn中十分重要的类包含网络各层的定义及forward方法可以从这个类派生自己的模型类。nn.Module重要的函数forward(self,*input)forward函数为前向传播函数需要自己重写它用来实现模型的功能并实现各个层的连接关系__call__(self, *input, **kwargs) __call__()的作用是使class实例能够像函数一样被调用以“对象名()”的形式使用__repr__(self)__repr__函数为Python的一个内置函数它能把一个对象用字符串的形式表达出来__init__(self)构造函数自定义模型的网络层对象一般在这个函数中定义。classResNetBlock(nn.Module):def__init__(self,input_channels,num_channels,stride1): 构造函数定义网络层 super().__init__()self.conv1nn.Conv2d(input_channels,num_channels,kernel_size3,padding1,stridestride)self.btn1nn.BatchNorm2d(num_channels)self.conv2nn.Conv2d(num_channels,num_channels,kernel_size3,padding1,stride1)self.btn2nn.BatchNorm2d(num_channels)ifstride!1:self.downsamplenn.Conv2d(input_channels,num_channels,kernel_size1,stridestride)else:self.downsamplelambdax:xdefforward(self,X): 实现反向传播 Yself.btn1(self.conv1(X))Ynn.functional.relu(Y)Yself.btn2(self.conv2(Y))Yself.downsample(X)returnnn.functional.relu(Y)定义模型ResNet同样派生于nn.Module与ResNetBlock类似需要实现forward。torch.nn.Sequential是PyTorch 中一个用于构建顺序神经网络模型的容器类它将多个神经网络层或模块按顺序组合在一起简化模型搭建过程。‌Sequential器会严格按照添加的顺序执行内部的子模块前向传播时自动传递数据适用于简单神经网络的构建。classResNet(nn.Module):def__init__(self,layer_dism,num_class10): 构造函数定义预处理model构建block层 super(ResNet,self).__init__()# 预处理self.stemnn.Sequential(nn.Conv2d(3,64,3,1),# 3x30x30nn.BatchNorm2d(64),nn.ReLU(),nn.MaxPool2d(2,2)# 64x15x15)self.layer1self.build_resblock(64,64,layer_dism[0])self.layer2self.build_resblock(64,128,layer_dism[1],2)self.layer3self.build_resblock(128,256,layer_dism[2],2)self.layer4self.build_resblock(256,512,layer_dism[3],2)self.avgpoolnn.AvgPool2d(1,1)self.btnnn.Flatten()self.fcnn.Linear(512,num_class)defbuild_resblock(self,input_channels,num_channels,block,stride1):res_blocknn.Sequential()res_block.append(ResNetBlock(input_channels,num_channels,stride))for_inrange(1,block):res_block.append(ResNetBlock(num_channels,num_channels,stride))returnres_blockdefforward(self,X):outself.stem(X)outself.layer1(out)outself.layer2(out)outself.layer3(out)outself.layer4(out)outself.avgpool(out)returnself.fc(self.btn(out))模型训练加载数据使用torchvision.datasets加载本地数据如果本地没有数据可以设置downloadTrue自动下载。# 定义数据转换transformtransforms.Compose([transforms.ToTensor(),# 将PIL图像转换为Tensortransforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))# 归一化])# 加载CIFAR-10训练集trainsettorchvision.datasets.CIFAR10(rootrD:\dwload,trainTrue,downloadFalse,transformtransform)trainloaderth.utils.data.DataLoader(trainset,batch_size16,shuffleFalse,num_workers2)# 加载CIFAR-10测试集testsettorchvision.datasets.CIFAR10(rootrD:\dwload,trainFalse,downloadFalse,transformtransform)testloaderth.utils.data.DataLoader(testset,batch_size16,shuffleFalse,num_workers2)模型初始化模型初始化是确保网络能够有效学习的关键步骤一个好的初始值会使模型收敛速度提高使模型准确率更精确。torch.nn.init模块提供了一系列的权重初始化函数torch.nn.init.uniform_ 均匀分布torch.nn.init.normal_ 正态分布torch.nn.init.constant_初始化为指定常数torch.nn.init.kaiming_uniform_凯明均匀分布torch.nn.init.kaiming_normal_凯明正态分布torch.nn.init.xavier_uniform_Xavier均匀分布torch.nn.init.xavier_normal_Xavier正态分布在初始化时最好不要将模型的参数初始化为0因为这样会导致梯度消失进而影响训练效果。可以将模型初始化为一个很小的值如0.010.001等。definitialize_weight(m):ifisinstance(m,nn.Conv2d)orisinstance(m,nn.Linear):nn.init.kaiming_normal_(m.weight,modefan_out,nonlinearityrelu)# mode权重方差计算方式可选 fan_in 或 fan_out输入、输出神经元数量# nonlinearity激活函数类型用于调整计算公式 一般是relu、leaky_reluifm.biasisnotNone:nn.init.constant_(m.bias,0)[2,2,2,2] 参数分别代表四个block的中的残差块数量可以仔细看一下build_resblock函数resnet_18ResNet([2,2,2,2])resnet_18.apply(initialize_weight)# 初始化模型loss_crossnn.CrossEntropyLoss()trainerth.optim.SGD(resnet_18.parameters())训练训练过程比较漫长这里训练只有20轮测试精度0.51。如果有N卡加持的话可以适当调高epoch精度能进一步提高。forepochinrange(0,20):running_loss0.0forinputs,labelsintrainloader:trainer.zero_grad()outputsresnet_18(inputs)lossloss_cross(outputs,labels)loss.backward()trainer.step()running_lossloss.item()print(f[{epoch1}] ev loss:{running_loss/3125})running_loss0.0
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发项目计划下列属于网页制作平台的是

抖音下载器完整攻略:从入门到精通的高效下载技巧 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在内容为王的时代,抖音作为短视频领域的领头羊,每天产生海量的优质内容。…

张小明 2026/1/6 23:57:36 网站建设

贵阳花溪建设村镇银行官方网站昆明网站建设kmdtkj

第一章:农业物联网设备认证的挑战与PHP解决方案在现代农业中,物联网(IoT)设备被广泛用于监测土壤湿度、气候条件和作物生长状态。然而,这些设备的安全认证面临严峻挑战,包括设备身份伪造、通信劫持和数据篡…

张小明 2026/1/9 13:36:46 网站建设

天津建设部网站保温辽宁朝阳网站建设公司

在人工智能驱动软件开发的浪潮中,THUDM团队近日开源的SWE-Dev-9B模型引发行业广泛关注。作为SWE-Dev系列的重要成员,该模型基于GLM-4-9B-Chat基座构建,专为软件工程项目的全生命周期任务打造,从需求文档分析、代码逻辑实现&#x…

张小明 2026/1/7 0:39:39 网站建设

三合一网站建设系统门户网站建设方案目录

大家好,我是迎天下网络科技有限公司的技术负责人李芳。作为一名一线的 Java 后端开发工程师,今天想和大家分享一下我在实际项目中使用 Qoder 的一些经验。通过几个真实的小案例,我会展示 Qoder 是如何帮助我们提升开发效率、优化代码质量的。…

张小明 2026/1/9 1:22:04 网站建设

铭万做的网站专门做单页的网站

作为Android平台上最受欢迎的免费开源漫画阅读器,TachiyomiJ2K的通知系统配置是确保用户实时获取漫画更新提醒的关键功能。通过合理的TachiyomiJ2K通知设置,您将不再错过任何新章节,让漫画阅读体验更加流畅高效。😊 【免费下载链接…

张小明 2026/1/7 1:48:55 网站建设

南通港闸区城乡建设局网站影响网站建设的关键点

还在为原神抽卡数据记不清而烦恼吗?每次抽卡都要手动记录,不仅麻烦还容易出错。现在,一款名为genshin-wish-export的智能工具将彻底改变你的抽卡体验,让数据分析变得简单直观。 【免费下载链接】genshin-wish-export biuuu/genshi…

张小明 2026/1/7 1:58:51 网站建设