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

企业外贸营销型网站app模板免费

企业外贸营销型网站,app模板免费,厦门建站程序,干净无广告的搜索引擎1 层和块 块由类#xff08;class#xff09;表示。它的任何子类都必须定义一个将其输入转换为输出的前向传播函数#xff0c;并且必须存储任何必需的参数。注意#xff0c;有些块不需要任何参数。最后#xff0c;为了计算梯度#xff0c;块必须具有反向传播函数。 1.1…1 层和块 块由类class表示。它的任何子类都必须定义一个将其输入转换为输出的前向传播函数并且必须存储任何必需的参数。注意有些块不需要任何参数。最后为了计算梯度块必须具有反向传播函数。 1.1 自定义块 每个块必须提供的基本功能 将输入数据作为其前向传播函数的参数。通过前向传播函数来生成输出。计算其输出关于输入的梯度可通过其反向传播函数进行访问。通常这是自动发生的。存储和访问前向传播计算所需的参数。根据需要初始化模型参数。 class MLP(nn.Module):# 用模型参数声明层。这里我们声明两个全连接的层def __init__(self):# 调用MLP的父类Module的构造函数来执行必要的初始化。# 这样在类实例化时也可以指定其他函数参数例如模型参数params稍后将介绍super().__init__()self.hidden nn.Linear(20, 256) # 隐藏层self.out nn.Linear(256, 10) # 输出层# 定义模型的前向传播即如何根据输入X返回所需的模型输出def forward(self, X):# 注意这里我们使用ReLU的函数版本其在nn.functional模块中定义。return self.out(F.relu(self.hidden(X)))2 参数管理 参数是复合的对象包含值、梯度和额外信息。 访问第一个全连接层的参数和访问所有层 print(*[(name, param.shape) for name, param in net[0].named_parameters()]) print(*[(name, param.shape) for name, param in net.named_parameters()])另一种访问网络参数的方式 net.state_dict()[2.bias].data2.1 参数初始化 默认情况下PyTorch会根据一个范围均匀地初始化权重和偏置矩阵这个范围是根据输入和输出维度计算出的。PyTorch的nn.init模块提供了多种预置初始化方法。 2.1.1 内置初始化 下面的代码将所有权重参数初始化为标准差为0.01的高斯随机变量 且将偏置参数设置为0。 def init_normal(m):if type(m) nn.Linear:nn.init.normal_(m.weight, mean0, std0.01)nn.init.zeros_(m.bias) net.apply(init_normal) net[0].weight.data[0], net[0].bias.data[0]还可以将所有参数初始化为给定的常数比如初始化为1。 def init_constant(m):if type(m) nn.Linear:nn.init.constant_(m.weight, 1)nn.init.zeros_(m.bias) net.apply(init_constant) net[0].weight.data[0], net[0].bias.data[0]还可以[对某些块应用不同的初始化方法]。 例如下面使用Xavier初始化方法初始化第一个神经网络层 然后将第三个神经网络层初始化为常量值42。 def init_xavier(m):if type(m) nn.Linear:nn.init.xavier_uniform_(m.weight) def init_42(m):if type(m) nn.Linear:nn.init.constant_(m.weight, 42)net[0].apply(init_xavier) net[2].apply(init_42) print(net[0].weight.data[0]) print(net[2].weight.data)2.1.2 自定义初始化 使用以下的分布为任意权重参数定义初始化方法 def my_init(m):if type(m) nn.Linear:print(Init, *[(name, param.shape)for name, param in m.named_parameters()][0])nn.init.uniform_(m.weight, -10, 10)m.weight.data * m.weight.data.abs() 5net.apply(my_init) net[0].weight[:2]2.2 参数绑定 在多个层间共享参数 可以定义一个稠密层然后使用它的参数来设置另一个层的参数。 # 我们需要给共享层一个名称以便可以引用它的参数 shared nn.Linear(8, 8) net nn.Sequential(nn.Linear(4, 8), nn.ReLU(),shared, nn.ReLU(),shared, nn.ReLU(),nn.Linear(8, 1)) net(X) # 检查参数是否相同 print(net[2].weight.data[0] net[4].weight.data[0]) net[2].weight.data[0, 0] 100 # 确保它们实际上是同一个对象而不只是有相同的值 print(net[2].weight.data[0] net[4].weight.data[0])这个例子表明第三个和第五个神经网络层的参数是绑定的。 它们不仅值相等而且由相同的张量表示。 因此如果我们改变其中一个参数另一个参数也会改变。 当参数绑定时梯度会发生什么情况 答案是由于模型参数包含梯度因此在反向传播期间第二个隐藏层 即第三个神经网络层和第三个隐藏层即第五个神经网络层的梯度会加在一起。 3 自定义层 3.1 不带参数的层 首先我们(构造一个没有任何参数的自定义层)。只需继承基础层类并实现前向传播功能。 import torch import torch.nn.functional as F from torch import nnclass CenteredLayer(nn.Module):def __init__(self):super().__init__()def forward(self, X):return X - X.mean()3.2 带参数的层 参数可以通过训练进行调整。 我们可以使用内置函数来创建参数这些函数提供一些基本的管理功能。 比如管理访问、初始化、共享、保存和加载模型参数。 实现自定义版本的全连接层。 回想一下该层需要两个参数一个用于表示权重另一个用于表示偏置项。 class MyLinear(nn.Module):def __init__(self, in_units, units):super().__init__()self.weight nn.Parameter(torch.randn(in_units, units))self.bias nn.Parameter(torch.randn(units,))def forward(self, X):linear torch.matmul(X, self.weight.data) self.bias.datareturn F.relu(linear)
http://www.hkea.cn/news/14511948/

相关文章:

  • 建设第三方公众号平台网站教程烟台论坛
  • qq钓鱼网站安徽建设工程信息网文件
  • 一个网站要怎么做的xml网站开发工具
  • 好的网站特点三网合一网站建设
  • 溆浦县建筑公司网站网站图一般做多少分辨率
  • 网站域名绑定ip公司让做网站违法
  • 网站开发软件和工具ide和编辑器wordpress做cms
  • 网站域名空间费用广东智能网站建设质量保障
  • 怎么制作一个网站教程石家庄网站建设.神鹿网络
  • 做美食网站的目的图片识别搜索引擎
  • 网站备案号是什么样子网站提供服务商
  • 网站诊断报告案例盐城市城乡和住房建设厅网站
  • 做视频资源网站有哪些少儿编程课哪个机构最好
  • 上海装修网站建设海南省建设执业资格注册管理中心网站
  • 阿里图标库谁做的网站公司搬家
  • 阳江网站网站建设中企控股集团
  • 网站多多郴州网站建设费用价格
  • 禅城网站建设联系电话有什么专业做蛋糕的网站吗
  • 无锡网站制作怎么样重庆是哪个省哪个市
  • 建设网站英文翻译wordpress 手机端优化
  • 成都网站建设联系方式云匠网官网
  • 蓝色大气网站源码网站建设业务员沟通需求
  • 山西手机网站建设百度榜单
  • dw做网站简单首页批量刷wordpress评论
  • 郑州最好的网站建设wordpress英文变中文
  • 注册企业的步骤顺德网站优化公司
  • 珠海网站建设小小网络阿里百川 网站开发
  • 百度网站申诉网站 左右浮动 广告
  • 网站怎么企业备案信息中国最好的建筑设计公司
  • 网页源代码修改了影响别人吗广州百度seo代理