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

宝洁网站建设wordpress 一个广告位放两个广告

宝洁网站建设,wordpress 一个广告位放两个广告,如何做网站的内链和外链,上海助君网络科技有限公司目录 一、位置编码的意义 二、位置编码方法 三、代码实现 一、位置编码的意义 在标准的注意力机制中,每个查询都会关注所有的键-值对并生成一个注意力输出,模型并没有考虑到输入序列每个token的顺序关系。 以["我&qu…

目录

一、位置编码的意义        

二、位置编码方法

三、代码实现


一、位置编码的意义        

        在标准的注意力机制中,每个查询都会关注所有的键-值对并生成一个注意力输出,模型并没有考虑到输入序列每个token的顺序关系。


        以["我",“爱”,“你”]["你",“爱”,“我”]为例,假如输入序列为:["我",“爱”,“你”],这个输入序列经过embedding层编码后的向量为:

  • "我" → [1, 0]

  • "爱" → [0, 1]

  • "你" → [0, 0]

        接下来,模型会计算每个词与其他词的相似度。例如,计算“爱”对“我”和“你”的注意力权重(缩放点积)时:

  • "爱" vs "我": (0*1) + (1*0) = 0

  • "爱" vs "你": (0*0) + (1*0) = 0

        此时,模型可能认为“爱”和“我”“你”都无关(相似度为0),但显然不合理,因为“爱”在序列中的位置(中间)应该关联前后词。如果我们变换“我”“你”的位置,相似度依然会是0,说明此时在模型眼中,“我爱你”“你爱我”并没有差别。


        如果我们在embedding层编码时同时加入各个token的位置信息(位置编码):

  • 位置0("我") → [0.1, 0.2]

  • 位置1("爱") → [0.3, 0.4]

  • 位置2("你") → [0.5, 0.6]

        新的词表示(embedding层编码结果 + 位置编码结果):

  • "我" → [1+0.1, 0+0.2] = [1.1, 0.2]

  • "爱" → [0+0.3, 1+0.4] = [0.3, 1.4]

  • "你" → [0+0.5, 0+0.6] = [0.5, 0.6]

        重新计算注意力权重(以“爱”为中心):

  • "爱" vs "我": (0.3*1.1) + (1.4*0.2) = 0.33 + 0.28 = 0.61

  • "爱" vs "你": (0.3*0.5) + (1.4*0.6) = 0.15 + 0.84 = 0.99

        此时,“爱”“你”的注意力权重更高,符合“爱”在中间位置时更关注后面的“你”。如果交换“我”“你”的位置,因为位置关系变化了,计算得到的注意力权重也会发生变化,也就说明此时模型能够区分“我爱你”“你爱我”的语义差别了。

        从上面的例子可以看出,位置编码可以帮助注意力模型理解输入序列中各个token的顺序关系。

二、位置编码方法

        假设embedding层输出的词嵌入矩阵为X,token个数为n,向量长度为d,即;位置编码输出矩阵为P,。P中第i行,第2j列和第2j+1列的元素为:

        最终将使用X+P作为整个编码流程的输出结果。

        至于为什么要用上面的公式来进行位置编码,感觉自己还是一知半解,后面学会了再记录下来。

三、代码实现

import torch
from torch import nn
"""位置编码"""
class PositionalEncoding(nn.Module):# 参数max_len >= 每个batch的token个数n;参数num_hiddens对应于编码向量长度ddef __init__(self, num_hiddens, dropout, max_len=1000):super(PositionalEncoding, self).__init__()self.dropout = nn.Dropout(dropout)# 位置编码矩阵Pself.P = torch.zeros((1, max_len, num_hiddens))# 分子molecule = torch.arange(max_len, dtype=torch.float32).reshape(-1, 1)# 分母denominator = torch.pow(10000, torch.arange(0, num_hiddens, 2, dtype=torch.float32) / num_hiddens)X = molecule / denominator# 从索引0开始,每隔两个元素取一个值(即取所有偶数索引的元素)self.P[:, :, 0::2] = torch.sin(X)# 从索引1开始,每隔两个元素取一个值(即取所有奇数索引的元素)self.P[:, :, 1::2] = torch.cos(X)def forward(self, X):X = X + self.P[:, :X.shape[1], :].to(X.device)return self.dropout(X)
if __name__ == "__main__":encoding_dim, num_steps = 32, 60pos_encoding = PositionalEncoding(encoding_dim, 0)pos_encoding.eval()# 模拟embedding层输出的词嵌入矩阵,(batch_size, 查询个数, 向量长度) -> (1, 60, 32)X = torch.zeros((1, num_steps, encoding_dim))# embedding+位置编码的结果,(batch_size, 查询个数, 向量长度) -> (1, 60, 32)X = pos_encoding(X)# 仅位置编码的结果,(batch_size, 查询个数, 向量长度) -> (1, 60, 32)P = pos_encoding.P[:, :X.shape[1], :]


参考链接:

《动手学深度学习》 — 动手学深度学习 2.0.0 documentationhttps://zh-v2.d2l.ai/

http://www.dtcms.com/a/590875.html

相关文章:

  • 做的网站出现404公众号 商城 网站开发
  • 网站flash制作教程六安网站关键词排名优化地址
  • 网站运营改进的点网络营销出来做什么
  • 学校网站建设要点软文推广是什么
  • 做电影网站要买什么wordpress多主题投票
  • 如何做电影网站才不侵权常州免费建站
  • 智能阅读助手:让找书更简单(Agent)
  • 小实验--定时器中断点灯
  • 永久免费自助建站系统广东省路桥建设有限公司网站
  • 天然气公司的网站应该怎么做手机h5页面制作软件
  • 公司网站可以分两个域名做吗深圳网站建设网页制作
  • server 2008 网站部署国外网站排名前十
  • 高端网站设计杭州重庆网站开发哪家好
  • 北京南站地铁华为官方网站手机商城
  • 禁止wordpress网站上传图片时自动生成三张图片方法淘宝搜索关键词查询工具
  • 域名备案好了怎么建设网站养老院网站建设的好处
  • wordpress如何搬站在网站建设中什么用于搭建页面结构
  • 时彩网站开发亿网站手机源码
  • php用什么做网站服务器全国企业信息管理系统
  • 算法竞赛中的vector和静态数组
  • 网站宣传海报图片哎呀哎呀视频在线观看
  • 重庆大足网站建设珠海网页模板建站
  • 网站建设的流程范文1500字网站代维护
  • 普陀营销型网站建设wordpress连接mysql8
  • 怎么看网站开发的好坏个人信息展示html模板
  • 网站建设有哪些软件有哪些内容常州网站建设咨询
  • 手机网站模版更换技巧wordpress的文件说明
  • 连云港建设部网站济宁网站开发
  • 中国建设银行黑龙江支行官方网站桂林市区面积
  • 崇州网站建站iis默认网站无法访问