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

国外网站界面在线购物商城系统

国外网站界面,在线购物商城系统,廊坊开发区规划建设局网站,excel网站做链接一、单头注意力 单头注意力的大致流程如下#xff1a; ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层#xff08;Wq、Wk、Wv#xff09;后得到查询Q、键K和值V#xff1b; ② 查询Q和键K经过注意力评分函数#xff08;如#xff1a;缩放点积运算 ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层Wq、Wk、Wv后得到查询Q、键K和值V ② 查询Q和键K经过注意力评分函数如缩放点积运算得到值权重矩阵 ③ 权重矩阵与值向量相乘得到输出结果。 图1 单头注意力模型 二、多头注意力  2.1 使用多头注意力的意义       看了一些对多头注意力机制解释的视频我自己的浅显理解是在实践中我们会希望查询Q能够从给定内容中尽可能多地匹配到与自己相关的语义信息从而得到更准确的预测输出。而多头注意力将查询、键和值分成不同的子空间表示representation subspaces有点类似于子特征使得匹配过程更加细化。 2.2 代码实现 也许直接看代码能更快地理解这个过程 import torch from torch import nn from attentionScore import DotProductAttention # 多头注意力模型 class MultiHeadAttention(nn.Module):def __init__(self, key_size, query_size, value_size, num_hiddens,num_heads, dropout, biasFalse, **kwargs):super(MultiHeadAttention, self).__init__(**kwargs)self.num_heads num_headsself.attention DotProductAttention(dropout)self.W_q nn.Linear(query_size, num_hiddens, biasbias)self.W_k nn.Linear(key_size, num_hiddens, biasbias)self.W_v nn.Linear(value_size, num_hiddens, biasbias)self.W_o nn.Linear(num_hiddens, num_hiddens, biasbias)# queries(batch_size查询的个数query_size)# keys(batch_size“键值”对的个数key_size)# values(batch_size“键值”对的个数value_size)def forward(self, queries, keys, values, valid_lens):# querieskeysvalues的形状(batch_size查询或者“键值”对的个数num_hiddens)queries self.W_q(queries)keys self.W_k(keys)values self.W_v(values)# 经过变换后输出的querieskeysvalues的形状(batch_size*num_heads查询或者“键值”对的个数num_hiddens/num_heads)queries transpose_qkv(queries, self.num_heads)keys transpose_qkv(keys, self.num_heads)values transpose_qkv(values, self.num_heads)# valid_lens的形状(batch_size)或(batch_size查询的个数)if valid_lens is not None:# 在轴0将第一项标量或者矢量复制num_heads次然后如此复制第二项然后诸如此类。valid_lens torch.repeat_interleave(valid_lens, repeatsself.num_heads, dim0)# output的形状(batch_size*num_heads查询的个数num_hiddens/num_heads)output self.attention(queries, keys, values, valid_lens)# output_concat的形状(batch_size查询的个数num_hiddens)output_concat transpose_output(output, self.num_heads)return self.W_o(output_concat) # 为了多注意力头的并行计算而变换形状 def transpose_qkv(X, num_heads):# 输入X的形状:(batch_size查询或者“键值”对的个数num_hiddens)# 输出X的形状:(batch_size查询或者“键值”对的个数num_headsnum_hiddens/num_heads)X X.reshape(X.shape[0], X.shape[1], num_heads, -1)# 输出X的形状:(batch_sizenum_heads查询或者“键值”对的个数, num_hiddens/num_heads)X X.permute(0, 2, 1, 3)# 最终输出的形状:(batch_size*num_heads,查询或者“键值”对的个数, num_hiddens/num_heads)return X.reshape(-1, X.shape[2], X.shape[3]) # 逆转transpose_qkv函数的操作 def transpose_output(X, num_heads):X X.reshape(-1, num_heads, X.shape[1], X.shape[2])X X.permute(0, 2, 1, 3)return X.reshape(X.shape[0], X.shape[1], -1) 可以发现前面的处理流程和单头注意力的第①步是一样的都是使用全连接层计算查询Q、键K、值V。但在进行点积运算之前模型使用transpose_qkv函数对QKV进行了切割变换下图可以帮助理解这个过程 图2 transpose_qkv函数处理Q 图3 transpose_qkv函数处理K  这个过程就像是把一个整体划分为了很多小的子空间。一个不知道恰不恰当的比喻就像是把“父母”这个词拆分成了“长辈”、“养育者”、“监护人”、“爸妈”多重含义。 对切割变换后的QK进行缩放点积运算过程如下图所示 图4 对切割变换后的Q和K进行缩放点积运算 transpose_output后的输出结果 图5 对值加权结果进行transpose_output变换后  对比单头注意力的值加权输出原来的每个查询Q匹配到了更多的value 图6 多头注意力与单头注意力的值加权结果对比 整个过程就像是把一个父需求分割成不同的子需求子需求单独与不同的子特征进行匹配最后使得每个父需求获得了更多的语义信息。
http://www.hkea.cn/news/14565008/

相关文章:

  • 百度网站名称及网址网页设计素材代码
  • oss做网站迁移wordpress主题模板修改
  • 宁波建设网站制作wordpress禁用admin用户
  • 淮安做网站就找卓越凯欣网页制作教程答案
  • 珠海网站建设找哪家好在谷歌上网站推广
  • 鞍山建一个网站大概要多少钱网站定制公司kinglink
  • 如何给网站做权重wordpress 漫画站
  • 公司网站建设457216336哪些网站论坛做推广好
  • 网站源码之家网站全屏弹出窗口
  • 延边省建设局网站官网创业计划书(大学生版)
  • 常熟外贸网站建设成成品网站源码有限公司
  • 微信放在网站根目录seo优
  • 赣州品牌网站建设ajax 效果网站
  • 扬中网站建设价格网站和app的区别
  • 一元夺宝网站制作视频网页设计需要用什么软件
  • 广东快速做网站公司哪家好青岛美容化妆品外贸网站建设
  • 做家教网站资质游戏网站开发什么意思
  • 审计实务网站建设论文紧急访问升级狼人通知
  • 取名网站怎么做绍兴做网站哪家好
  • 网站建设费 科研 设备费湖南网站建设公司 都来磐石网络
  • 怎么自己的电脑做网站服务器网站和系统的区别
  • 怎么选择模板建站服务网站框架是什么
  • 兰州新区规划建设管理局网站贵州网站推广
  • 大理工程建设信息网站可以做没有水印的视频网站
  • 赣州网站开发制作郴州seo服务
  • 什么程序做网站安全新闻文章网站源码
  • 收费网站建设视频教程免费下载无锡网页设计培训班
  • 莱西做网站网站域名不变网站可以从做吗
  • 门户网站网站开发广州编程课程培训机构排名
  • 沭阳网站建设招聘jq 网站模板