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

简述网站建设方法百度推广怎么操作

简述网站建设方法,百度推广怎么操作,白山市建设局网站,ps培训班self.weight nn.Parameter(torch.randn(in_channels, out_channels)) 和 self.linear nn.Linear(in_channels, out_channels) 并不完全一致,尽管它们都可以用于实现线性变换(即全连接层),但它们的使用方式和内部实现有所不同。 …

self.weight = nn.Parameter(torch.randn(in_channels, out_channels))self.linear = nn.Linear(in_channels, out_channels) 并不完全一致,尽管它们都可以用于实现线性变换(即全连接层),但它们的使用方式和内部实现有所不同。

nn.Parameter

当手动创建一个 nn.Parameter 时,是在显式地定义权重矩阵,并且需要自己管理这个参数以及它如何参与到计算中。例如:

self.weight = nn.Parameter(torch.randn(in_channels, out_channels))

这里,self.weight 是一个可学习的参数,可以将其视为模型的一部分,并在前向传播过程中手动与输入进行矩阵乘法运算。假设输入是 x,则输出可以这样计算:

output = torch.matmul(x, self.weight)

注意这里的数学公式是 Y = X W Y = XW Y=XW,其中 X X X 是输入矩阵, W W W 是权重矩阵。如果还需要加上偏置项 b b b,则变为 Y = X W + b Y = XW + b Y=XW+b。在这个例子中,需要另外定义并初始化偏置项 self.bias

示例 1:自定义实现线性层

import torch
import torch.nn as nnclass CustomLinear(nn.Module):def __init__(self, in_channels, out_channels):super(CustomLinear, self).__init__()# 初始化权重self.weight = nn.Parameter(torch.randn(in_channels, out_channels))# 初始化偏置self.bias = nn.Parameter(torch.randn(out_channels))def forward(self, x):# 线性变换:Y = XW + breturn torch.matmul(x, self.weight) + self.bias# 创建自定义线性层
custom_linear = CustomLinear(in_channels=3, out_channels=2)# 打印权重和偏置
print("Weights:", custom_linear.weight)
print("Bias:", custom_linear.bias)# 输入数据
input_data = torch.randn(4, 3)  # 4个样本,每个样本有3个特征# 前向传播
output = custom_linear(input_data)
print("Output:", output)

在这个示例中,我们手动创建了一个自定义的线性层 CustomLinear,它使用 nn.Parameter 来定义权重和偏置。在 forward 方法中,我们手动计算线性变换:Y = XW + b。这个实现与 nn.Linear 提供的功能类似,但更多地体现了手动管理权重和偏置的方式。

nn.Linear

另一方面,nn.Linear 是 PyTorch 提供的一个封装好的模块,用于执行线性变换。它不仅包含了权重矩阵,还自动处理了偏置项(除非明确设置 bias=False)。例如:

self.linear = nn.Linear(in_channels, out_channels)

当调用 self.linear(x) 时,它实际上是在执行以下操作:

output = torch.matmul(x, self.linear.weight.t()) + self.linear.bias

这里,self.linear.weight 的形状是 (out_channels, in_channels),而不是直接 (in_channels, out_channels),因此在进行矩阵乘法之前需要对其转置 (t() 方法)。这意味着数学公式实际上是 Y = X W T + b Y = XW^T + b Y=XWT+b,其中 W T W^T WT 表示权重矩阵的转置。

示例 2:使用 nn.Linear

import torch
import torch.nn as nn# 定义一个线性层
linear_layer = nn.Linear(in_features=3, out_features=2)# 打印权重和偏置
print("Weights:", linear_layer.weight)
print("Bias:", linear_layer.bias)# 输入数据
input_data = torch.randn(4, 3)  # 4个样本,每个样本有3个特征# 前向传播
output = linear_layer(input_data)
print("Output:", output)

在这个示例中,我们创建了一个线性层,它接受一个形状为 [4, 3] 的输入数据,并将其映射到一个形状为 [4, 2] 的输出数据。linear_layer.weightlinear_layer.bias 是自动初始化的。

数学公式的对比

  • 对于手动定义的 nn.Parameter,如果输入是 X X X (形状为 [ N , i n _ c h a n n e l s ] [N, in\_channels] [N,in_channels]),权重是 W W W (形状为 [ i n _ c h a n n e l s , o u t _ c h a n n e l s ] [in\_channels, out\_channels] [in_channels,out_channels]),那么输出 Y Y Y 将通过 Y = X W Y = XW Y=XW 计算。

  • 对于 nn.Linear,同样的输入 X X X (形状为 [ N , i n _ c h a n n e l s ] [N, in\_channels] [N,in_channels]),但是权重 W ′ W' W (形状为 [ o u t _ c h a n n e l s , i n _ c h a n n e l s ] [out\_channels, in\_channels] [out_channels,in_channels]),输出 Y Y Y 将通过 Y = X ( W ′ ) T + b Y = X(W')^T + b Y=X(W)T+b 计算。

从上面可以看出,虽然两者都实现了线性变换,但在 nn.Linear 中,权重矩阵的形状是倒置的,以适应其内部的实现细节。此外,nn.Linear 还自动处理了偏置项的添加,这使得它比手动定义参数更加方便和简洁。

http://www.dtcms.com/wzjs/458717.html

相关文章:

  • 个人网站建设方法和过程天津百度爱采购
  • 网站建设招标书范本一个人怎么做独立站shopify
  • xiu主题做的网站seo外包靠谱
  • 大中型网站开发价格谷歌推广怎么开户
  • 绵阳做手机网站seo关键词排名优化案例
  • 手机网站建设电商培训机构推荐
  • 手车做网课网站多少重庆网络seo
  • 我国政府门户网站建设搜索最多的关键词的排名
  • cms网站建设教程网络推广公司专业网络
  • 网站类产品怎么做竞品分析搜索引擎优化排名培训
  • 网络服务商基本网络参数网站优化检测
  • 爱妮微如何做网站链接的网址关键词搜索次数查询
  • 网站开发一般会用到什么语言网站排名优化查询
  • 十个有创意的活动策划seo项目完整流程
  • wordpress 按时间类别seo公司赚钱吗
  • 关键词优化搜索引擎抖音seo怎么做的
  • 我被钓鱼网站骗了骗取建设信用卡建设银行会怎么处理钱会还回吗windows优化大师怎么用
  • 做网站的office平台深圳做网站的公司有哪些
  • 网站建设实训个人总结3000字百度小说官网
  • 网站开发代理商谷歌广告平台
  • wordpress无法显示主页内容关键词优化按天计费
  • 可以做皮肤测试的网站上海百度搜索排名优化
  • 九江 网站建设莆田seo推广公司
  • 呼和浩特建设工程安全管理网站seo有名气的优化公司
  • 小红书网站开发费用百度推广平台首页
  • psd设计网站模板境外电商有哪些平台
  • 自己怎么做网站网页厦门seo网站排名优化
  • 网站主要应用俄罗斯搜索引擎yandex推广入口
  • 一个微信小程序大概多少钱seo优化培训班
  • 免费建设网站北京朝阳区疫情最新情况