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

北京小程序网站制作竞价托管公司

北京小程序网站制作,竞价托管公司,室内设计学校比较好,alexa自定义层 深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一…

自定义层

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

不带参数的层

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

下面的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/301257.html

相关文章:

  • 织梦下载网站模板成人短期就业培训班
  • php网站开发工程师招聘会数据营销
  • 怎么办理营业执照网站优化排名推荐
  • 手机网站js电话悬浮优秀网页设计
  • 网站开发实验室建设方案百度广告平台电话
  • 哪些企业网站做得好网站群发软件
  • 设置网站维护页面深圳短视频seo教程
  • 北京市城乡和建设规委官方网站360关键词推广
  • 企业快速建站系统有必要买优化大师会员吗
  • 福州 网站备案优化公司组织架构
  • 网站建设工程师 html5微信朋友圈广告投放
  • 性做爰网站促销策略的四种方式
  • 国内优秀个人网站欣赏百度小说搜索排行榜
  • 中国电信网上营业厅天津百度网站排名优化
  • WordPress多站點支付插件长春网站推广排名
  • 网页设计师主要是做什么的呢seo如何快速出排名
  • 个人网站备案名称举例百度应用商店下载安装
  • 小区媒体网站建设搜索引擎国外
  • 企业检索网站建设软文营销的本质
  • 最简约的网站天机seo
  • 名词解释 网站内容百度商家入驻怎么做
  • wordpress nginx gzipseo诊断书案例
  • 工商企业登记查询珠海百度关键词优化
  • 国内最大的网站建设公司排名网站制作企业
  • js网站登录怎么做优化大师官网
  • 网站策划的内容有那些中国最近新闻大事件
  • 微信公众号登录入口在哪信息流优化师职业规划
  • 公司网站建设内容建议北京百度推广官网首页
  • 网站域名在哪看衡阳seo优化报价
  • 公安备案网站首页连云港seo