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

宣传册制作网站wordpress the7 中文视频教程

宣传册制作网站,wordpress the7 中文视频教程,县文化馆网站建设方案,河北关键词排名推广在参考yolo系列代码或其他开源代码#xff0c;经常看到register_buffer和 register_parameter的使用#xff0c;接下来将详细对他们进行介绍。 1. 前沿 在搭建网络时#xff0c;我们 自定义的参数#xff0c;往往不会保存到模型权重文件中#xff0c;或者成为模型可学习…在参考yolo系列代码或其他开源代码经常看到register_buffer和 register_parameter的使用接下来将详细对他们进行介绍。 1. 前沿 在搭建网络时我们 自定义的参数往往不会保存到模型权重文件中或者成为模型可学习的参数。即我们通过 net.named_parameters() (模型可学习参数)或 net.state_dict().items()(保存模型权重值)方法都无法遍历输出。那如何解决呢这就需要用到本文讲的register_parameter和register_buffer方法。 2. register_parameter register_parameter() 是 torch.nn.Module 类中的一个方法。 2.1 主要作用 用于定义可学习参数定义的参数可被保存到网络对象的参数中可使用 net.parameters() 或 net.named_parameters() 查看定义的参数可用 net.state_dict() 转换到字典中进而 保存到网络文件 / 网络参数文件中 2.2 函数说明 register_parameter(nameparam)参数 name参数名称 param参数张量 须是torch.nn.Parameter()对象 或 None 否则报错如下 TypeError: cannot assign torch.FloatTensor object to parameter xx (torch.nn.Parameter or None required) 2.3 举例说明 1自定义的参数未使用register_parameter import torch import torch.nn as nnclass MyModule(nn.Module):def __init__(self):super(MyModule, self).__init__()self.conv1 nn.Conv2d(in_channels3, out_channels6, kernel_size3, stride1, padding1, biasFalse)self.conv2 nn.Conv2d(in_channels6, out_channels9, kernel_size3, stride1, padding1, biasFalse)self.weight torch.ones(10,10)self.bias torch.zeros(10)def forward(self, x):x self.conv1(x)x self.conv2(x)x x * self.weight self.biasreturn xnet MyModule()print(\n, **30net.named_parameters**30, \n) for name, param in net.named_parameters():print(name, param.shape)print(\n, **30net.state_dict**30, \n) for key, val in net.state_dict().items():print(key, val.shape) 输出: 在网络搭建的代码中我们自定义了self.weight和self.bias参数。我们思考下2个问题:1. 我们定义的self.weight和self.bias参数是否会保存到网络的参数中是否能在优化器的作用下进行学习。2. 这些参数是否能够保存到模型文件中从而可以利用state_dict中遍历出来。通过上面的打印信息我们发现 使用net.named_parameters()迭代网络中可学习的参数发现输出的参数只有conv1和conv2的weight参数并没有输出我们定义的self.weight和self.bias接下来使用net.state_dict()方法迭代保存的参数同样发现self.weight和self.bias参数也没有被输出出来。 2通过register_parameter方法来定义参数 接下来我们使用register_parameter来定义weight和bias参数,看看会有啥效果。代码修改如下: self.register_parameter(weight,torch.nn.Parameter(torch.ones(10,10))) self.register_parameter(bias,torch.nn.Parameter(torch.zeros(10)))完整代码 import torch import torch.nn as nnclass MyModule(nn.Module):def __init__(self):super(MyModule, self).__init__()self.conv1 nn.Conv2d(in_channels3, out_channels6, kernel_size3, stride1, padding1, biasFalse)self.conv2 nn.Conv2d(in_channels6, out_channels9, kernel_size3, stride1, padding1, biasFalse)self.register_parameter(weight,torch.nn.Parameter(torch.ones(10,10)))self.register_parameter(bias,torch.nn.Parameter(torch.zeros(10)))def forward(self, x):x self.conv1(x)x self.conv2(x)x x * self.weight self.biasreturn xnet MyModule()print(\n, **30net.named_parameters**30, \n) for name, param in net.named_parameters():print(name, param.shape)print(\n, **30net.state_dict**30, \n) for key, val in net.state_dict().items():print(key, val.shape) 可以看到使用了register_parameter定义的参数weight和bias可以通过net.named_parameters或者net.parameters迭代出来的这说明weight和bias已经存到了网络的参数中他们是可学习的参数同时通过state_dict()也能将参数和值给迭代出来就说明如果要保存模型权重或网络参数时这两个参数时可以被保存起来的。 3 register_buffer() register_buffer()是 torch.nn.Module() 类中的一个方法 3.1 作用 用于定义不可学习的参数定义的参数不会被保存到网络对象的参数中使用 net.parameters() 或 net.named_parameters() 查看不到定义的参数可用 net.state_dict() 转换到字典中进而 保存到网络文件 / 网络参数文件中 register_buffer() 用于在网络实例中 注册缓冲区存储在缓冲区中的数据类似于参数但不是参数它与参数的区别为 参数可以被优化器更新 requires_gradFalse / True buffer 中的数据 不可学习 不会被优化器更新 3.2、举例说明 将定义的weight和bias通过register_buffer来定义。 self.register_buffer(weight,torch.ones(10,10)) self.register_buffer(bias,torch.zeros(10))运行完整代码看看效果 import torch import torch.nn as nnclass MyModule(nn.Module):def __init__(self):super(MyModule, self).__init__()self.conv1 nn.Conv2d(in_channels3, out_channels6, kernel_size3, stride1, padding1, biasFalse)self.conv2 nn.Conv2d(in_channels6, out_channels9, kernel_size3, stride1, padding1, biasFalse)self.register_buffer(weight,torch.ones(10,10))self.register_buffer(bias,torch.zeros(10))def forward(self, x):x self.conv1(x)x self.conv2(x)x x * self.weight self.biasreturn xnet MyModule()zprint(\n, **30net.named_parameters**30, \n) for name, param in net.named_parameters():print(name, param.shape)print(\n, **30net.state_dict**30, \n) for key, val in net.state_dict().items():print(key, val.shape) 我们可以看到: 通过register_buffer定义的参数weight和bias它是没有被named_parameter给迭代出来的也就是说weight和bias不是网络的可学习参数无法通过优化器来迭代更新我们把它叫做buffer而不是参数然而我们使用net.state_dict去迭代的话weight和bias事可以被迭代出来的这就说明使用register_buffer定义的数据可以保持到模型或者权重文件中。 注意 在使用register_parameter定义参数时必须定义为可学习的参数因此需要通过torch.nn.Parameter去定义为一个可学习的参数而我们使用register_buffer定义参数时是不需要通过torch.nn.Parameter去定义为可学习的参数的
http://www.ihoyoo.com/news/6463.html

相关文章:

  • 甘肃省建设厅安全员官方网站哪位大神给个网址
  • 淄博网站设计方案甘肃电子商务网站建设
  • 客户网站建设洽谈方案免费企业网站程序上传
  • 温州本地网站平台搜索引擎推广的常见形式有
  • 自行创建网站的平台ui设计师需要会的软件
  • 免费个人网站制作网络广告例子
  • 整体网站构架招聘网站如何做运营
  • 网站设置专栏营销网站制作公司推荐
  • 建设网站的申请报告做优化网站怎么优化代码
  • 网站还没有做解析是什么意思福州市城乡建设局
  • 网站建设制作哪家便宜discuz安装教程
  • 官方网站建设维护合作协议流量网站怎么做
  • 网站的备案怎么处理公众号网页怎么制作
  • 怎样建设国外网站wordpress展示产品
  • 北京建筑信息网页面优化主要从哪些方面进行
  • 大连做网站哪家服务好沈阳网站建设 房小二
  • 给单位做网站需要备案吗wordpress背景图
  • googlechrome廊坊关键词优化
  • 内蒙古网站建站Wordpress用户名是哪个
  • 网站的主题与风格说明第一次做网站选多大空间
  • 网站开发中数据库的设计原则网页制作素材服装类
  • 做设计的网站商家入驻创建一个网站需要什么条件
  • 网站开发属于软件开发行业吗谷歌可以绑定wordpress
  • 常州做网站的企业搭建一个自己的网站
  • 网站备案 icp备案长沙房地产交易中心
  • 购物网站页面设计图片做网站需要具备哪些条件
  • 需要找做网站的福州制作公司网站
  • 网站建设开发哪家好wordpress首页调用文章缩略图
  • 陕西西安网站建设公司排名中企品牌网
  • 望城经开区建设开发公司门户网站网站配色案例