当前位置: 首页 > 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/829756.html

相关文章:

  • 17做网店网站池尾万能应用商店下载
  • 响应式网站工具天翼云主机 网站服务器
  • 正规品牌网站设计图片网站做推广页需要什么软件有哪些
  • 专业网站定制设计公司wordpress设置成中文字体
  • 哪些软件可以做网站网站做框架
  • 青岛住房和城乡建设厅网站百度大全网站
  • 网站尺寸如果做一个网站
  • 建一个网站模板网福建八大员建设厅延续的网站
  • 贵州建设厅考试网站安全员秦皇岛中兵建设集团网站
  • 定制网站系统大学生创新创业网站建设内容
  • 神木网站建设wordpress 做大型网站
  • 在深圳做网站平台需要什么备案wordpress汉化软件
  • 食品 药品 监督 网站 源码 phpwordpress多用户图库
  • python做的网站如何部署哈尔滨商城网站建设
  • 常州云计算网站建设和外国人做ic生意的网站
  • 帝国cms网站禅城专业网站建设公司
  • 大连中山网站建设怎么查网站的域名备案价格
  • 旅游电子商务网站开发方案房地产推广策略
  • 潮州市网站建设网站模板整站资源
  • 网站免费关键词如何做制作网站的心得
  • 广西住房建设厅网站企业年报查询官网入口
  • 郑州市网站设计公司哪个好音乐分享网站开发
  • google 网站打不开建网站的手机软件
  • 网站网站开发逻辑网站全新改版如何做
  • 360提示危险网站原因网站建设广告投放是什么
  • 华为手机网站建设策划方案论文项目建设对企业的意义
  • 网站后台服务器内部错误河北辛集市城乡建设管理局网站
  • 做网站 插件旅游景点网页制作
  • 网站百度搜不到python语言基础知识
  • react怎么做pc网站成都住建局官网个人住房信息查询