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

北京小程序网站制作结构优化

北京小程序网站制作,结构优化,中国服务器在外国网站有哪些,海洋牧场网站建设自定义层 深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一…

自定义层

深度学习成功背后的一个因素是神经网络的灵活性:
我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。
有时我们会遇到或要自己发明一个现在在深度学习框架中还不存在的层。在这些情况下,必须构建自定义层。本节将展示如何构建自定义层。

不带参数的层

首先,我们(构造一个没有任何参数的自定义层)。
回忆一下块的介绍,这应该看起来很眼熟。

下面的CenteredLayer类要从其输入中减去均值。要构建它,我们只需继承基础层类并实现前向传播功能

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() #X.mean()计算输入张量 X 的均值

让我们向该层提供一些数据,验证它是否能按预期工作。

layer = CenteredLayer()
layer(torch.FloatTensor([1, 2, 3, 4, 5]))
tensor([-2., -1.,  0.,  1.,  2.])

现在,我们可以[将层作为组件合并到更复杂的模型中]。

net = nn.Sequential(nn.Linear(8, 128), CenteredLayer())

作为额外的健全性检查,我们可以在向该网络发送随机数据后,检查均值是否为0。由于我们处理的是浮点数,因为存储精度的原因,我们仍然可能会看到一个非常小的非零数。

Y = net(torch.rand(4, 8))
Y.mean()
tensor(3.2596e-09, grad_fn=<MeanBackward0>)

[带参数的层]

以上我们知道了如何定义简单的层,下面我们继续定义具有参数的层,这些参数可以通过训练进行调整。

我们可以使用内置函数来创建参数,这些函数提供一些基本的管理功能。比如管理访问、初始化、共享、保存和加载模型参数。
这样做的好处之一是:我们不需要为每个自定义层编写自定义的序列化程序。

现在,让我们实现自定义版本的全连接层。
回想一下,该层需要两个参数,一个用于表示权重,另一个用于表示偏置项。在此实现中,我们使用修正线性单元作为激活函数。该层需要输入参数:in_unitsunits,分别表示输入数和输出数。

class MyLinear(nn.Module):"""自定义线性层,继承自 nn.Module。参数:in_units (int): 输入特征的维度。units (int): 输出特征的维度。"""def __init__(self, in_units, units):# 调用父类 nn.Module 的构造函数super().__init__()# 定义可学习的权重参数,形状为 (in_units, units)self.weight = nn.Parameter(torch.randn(in_units, units))# 定义可学习的偏置参数,形状为 (units,)self.bias = nn.Parameter(torch.randn(units,))def forward(self, X):"""前向传播方法。参数:X (torch.Tensor): 输入张量。返回:torch.Tensor: 经过线性变换和 ReLU 激活后的输出张量。"""# 计算线性变换,即输入 X 与权重矩阵的矩阵乘法,再加上偏置linear = torch.matmul(X, self.weight.data) + self.bias.data# 对线性变换的结果应用 ReLU 激活函数return F.relu(linear)

nn.Parameter 是 torch.Tensor 的子类,当你把一个张量封装进 nn.Parameter 时,这个张量就会自动成为 nn.Module 类的可训练参数。在模型训练过程中,这些参数会被优化器更新。

接下来,我们实例化MyLinear类并访问其模型参数。

linear = MyLinear(5, 3)
linear.weight
Parameter containing:
tensor([[ 0.1775, -1.4539,  0.3972],[-0.1339,  0.5273,  1.3041],[-0.3327, -0.2337, -0.6334],[ 1.2076, -0.3937,  0.6851],[-0.4716,  0.0894, -0.9195]], requires_grad=True)

我们可以[使用自定义层直接执行前向传播计算]。

linear(torch.rand(2, 5))
tensor([[0., 0., 0.],[0., 0., 0.]])

我们还可以(使用自定义层构建模型),就像使用内置的全连接层一样使用自定义层。

net = nn.Sequential(MyLinear(64, 8), MyLinear(8, 1))
net(torch.rand(2, 64))
tensor([[0.],[0.]])
http://www.dtcms.com/wzjs/113812.html

相关文章:

  • 有做淘宝网站的站长工具的使用seo综合查询排名
  • 网站后台难做么竞价托管推广哪家好
  • 公司建网站怎么做广州关键词优化外包
  • 怎么在手机上设计网站站长工具端口检测
  • 网站开发 保修期chrome浏览器官网入口
  • 法院 公开网站建设情况全网关键词搜索工具
  • 多个域名解析到一个网站seo关键词优化软件app
  • 网站管理员权限怎么设置网页点击量统计
  • 济南做网站找泉诺百度推广工具有哪些
  • 广告设计公司需要什么资质上海站群优化
  • 球类网站如何做宣传软文营销案例分析
  • 男女做那个的网站是什么网站推广和精准seo
  • 上海网站jianshe百度问一问客服人工在线咨询
  • 高埗镇网站建设如何做好网上销售
  • 网站开发需要怎么做中国新闻网最新消息
  • 免费行情软件网站下载视频广东短视频seo营销
  • 网站推广优化趋势推广引流吸引人的文案
  • 中国菲律宾冲突最新消息新闻seo公司优化排名
  • 可以做网站的魔盒seo月薪
  • 诊所网站模板seo的定义是什么
  • 衡水移动网站建设谷歌seo优化公司
  • 宁夏住房建设厅网站2345纯净版推广包
  • 网络建设规范和网络维护管理规范属于完善的seo网站
  • 谷歌怎么推广自己的网站网站免费发布与推广
  • php做网站特效网站排名优化客服
  • 做cps需要什么样的网站百度推广平台登录
  • 杭州网站开发工程师黑马培训价目表
  • 手游源码网站湖南关键词排名推广
  • 提升wordpress性能的插件海外广告优化师
  • 怎么做自己的优惠淘网站建设营销网站