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

举报个人备案网站做经营性给网站做cdn

举报个人备案网站做经营性,给网站做cdn,平台交易,汽车网站页面在注意力机制中#xff0c;每个查询都会关注所有的键值对并生成一个注意力输出。如果查询q#xff0c;键k和值v都来自于同一组输入#xff0c;那么这个注意力就被称为是自注意力#xff08;self-attention#xff09;。自注意力这部分理论#xff0c;我觉得台大李宏毅老师…在注意力机制中每个查询都会关注所有的键值对并生成一个注意力输出。如果查询q键k和值v都来自于同一组输入那么这个注意力就被称为是自注意力self-attention。自注意力这部分理论我觉得台大李宏毅老师的课程讲得最好。 自注意力就是输入一堆向量假设称为a1,a2,a3,a4那么这四个向量都会参与自注意力机制的运算得到的结果仍然是四个输出这四个输出再去做全连接运算。而每一个自注意力机制的输出都用到了a1~a4四个向量来进行运算也就是说每个输出都是观察了所有的输入之后才得到的。 首先输入a1需要和a2,a3,a4分别计算相关性这个相关性可以由缩放点积方式来计算也就称作缩放点积注意力也可以由两个两个输入向量相加后再做非线性处理得到称为加性注意力。 缩放点积的计算方法如下 输入一个向量v1和一个向量v2v1去乘上一个可训练矩阵Wq得到qv2去乘上一个可训练矩阵Wk得到k再把这个q和k做一个点积运算得到的就是α类似于相似度。 回到前面的例子中a1这里既作为q又作为k又作为v。其中Wq*a1就是q1Wk*a1就是k1q1和k1的点积就是α11相当于a1自己和自己的相似度同样的a1和a2,a3,a4分别计算得到α12α13α14然后将α11α12α13α14经过softmax得到最终的四个输出如下图所示 然后再用一个可训练矩阵Wv去乘以a1得到v1用计算得到的相似度α11去乘以v1得到一个值temp11同样的用可训练矩阵Wv去乘以a2得到v2用计算得到的相似度α‘12去乘以v2得到temp12类似的得到temp13,temp14然后把temp11temp12temp13temp14得到b1这个b1就是自注意力机制的第一个输出。 我们刚刚是以a1的视角做的运算得到b1同样可以以a2,a3,a4的视角做运算得到b2,b3,b4。这次就得到了自注意力机制的输出。光看最后这个结构图有点类似全连接只是里面的运算过程比全连接要复杂。 下面我们来看一下如何用代码实现自注意力的计算。 import torch import torch.nn as nn import torch.nn.functional as F class SelfAttention(nn.Module):# embed_size代表输入的向量维度heads代表多头注意力机制中的头数量def __init__(self, embed_size, heads): super(SelfAttention,self).__init__()self.embed_size embed_sizeself.heads headsself.head_dim embed_size // heads # 每个头的维度# 用assert断言机制判断assert (self.head_dim * heads embed_size), Embedding size needs to be divisible by heads # 没有偏置项其实这个线性层本质上就是为了计算值Wv*a Vself.values nn.Linear(self.head_dim, self.head_dim, biasFalse)self.keys nn.Linear(self.head_dim, self.head_dim, biasFalse)self.queries nn.Linear(self.head_dim, self.head_dim, biasFalse)# 最后的全连接操作输出仍是输入的向量维度也就是说大小是不变的self.fc_out nn.Linear(heads*self.head_dim, self.embed_size)def forward(self, values, keys, query, mask):# 这个mask也很关键它用于控制模型在处理序列数据时应该关注哪些部分以及忽略哪些部分N query.shape[0] # 获取输入的批量个数print(N:,N)value_len, key_len, query_len values.shape[1], keys.shape[1], query.shape[1] # 获取输入序列的长度# Split the embedding into self.heads different pieces # 把k,q,v都切分为多个组values values.reshape(N, value_len, self.heads, self.head_dim)keys keys.reshape(N, key_len, self.heads, self.head_dim)queries query.reshape(N, query_len, self.heads, self.head_dim)# 计算k,q,vvalues self.values(values)keys self.keys(keys)queries self.queries(queries)energy torch.einsum(nqhd,nkhd-nhqk,[queries, keys]) # 格式转化print(queries.shape:, queries.shape)print(keys.shape:, keys.shape)print(energy.shape:, energy.shape)if mask is not None:energy energy.masked_fill(mask0, float(-1e20))attention torch.softmax(energy/(self.embed_size**(1/2)), dim3) # softmax内部是缩放点积print(attention.shape:, attention.shape)print(values.shape:, values.shape)out torch.einsum(nhql,nlhd-nqhd, [attention, values]).reshape(N, query_len, self.heads*self.head_dim)out self.fc_out(out)return out embed_size 512 heads 8 attention SelfAttention(embed_size, heads)# batch size 1, seq length 60 values torch.rand(1,60,embed_size) keys torch.rand(1,60,embed_size) queries torch.rand(1,60,embed_size) mask None # 假设没有maskout attention(values, keys, queries, mask) print(out.shape)# 输出 N: 1 queries.shape: torch.Size([1, 60, 8, 64]) keys.shape: torch.Size([1, 60, 8, 64]) energy.shape: torch.Size([1, 8, 60, 60]) attention.shape: torch.Size([1, 8, 60, 60]) values.shape: torch.Size([1, 60, 8, 64]) torch.Size([1, 60, 512]) 通过这个程序我们可以看到自注意力机制是不改变输入和输出的形状的输入的Q,K,V格式是[1,60,512]输出的结果的仍然是[1,60,512]。 下面是几点说明 1. 这里的embed_size代表的是输入到自注意力层中的每个元素的向量维度。在Transformer模型中输入数据首先会被转换成一个固定长度的向量这个向量的长度就称为embed_size。 2. mask表示的是模型在处理序列数据时应该忽略掉哪部分我这里设置为None也就是全部参与计算。 3. einsum称为爱因斯坦求和起源是爱因斯坦在研究广义相对论时需要处理大量求和运算为了简化这种繁复的运算提出了求和约定推动了张量分析的发展。einsum 可以计算向量、矩阵、张量运算如果利用得当sinsum可完全代替其他的矩阵计算方法。 例如C einsum(ij,jk-ik, A, B)就相当于两个矩阵求内积cik Σj AijBjk。 通过输出可以看到在计算前queries的形状是[1,60,8,64]keys的形状是[1,60,8,64]在表达式nqhd,nkhd-nhqk中n1,q60,h8,d64,k60,两个矩阵进行内积因此得到的结果是nhqk也就是[1,8,60,60]。
http://www.dnsts.com.cn/news/64997.html

相关文章:

  • 资阳市网站seo做网站 如何注册公司
  • 做购物网站那个好河南网站备案代理
  • 怎么自己创建网站或者app宁波营销型网站建设
  • 给一个网站做需求分析网页制作模板
  • 网站建设推广方案策划书一个新的app如何推广
  • 辛集网站建设哪家好宣传型网站功能定位
  • 云南企业网站建设有限公司做html5视频网站
  • 江苏省通信建设交易中心网站蚌埠网站优化
  • 策划公司网站新民网站建设价格咨询
  • 做网站便宜500个企点qq大概多少钱
  • 科技网站 网站建设互联网营销师国家职业技能标准
  • 碧海蓝天网站手机网站搜索框代码
  • 揭阳网站建设公司哪个好只想怎样建设自己的销售网站
  • 赚钱的网站开发项目郑州网站制作生产厂商定制
  • 苏州专业做网站较好的公司有哪些大型网站开发管发
  • 豪车网站建设背景广东深圳地图全图
  • 网站设计上海济南建设工程有限公司
  • 网站互动怎么做wordpress拖动实现
  • 门户网站建设的平台wordpress 读取pdf
  • 查公司备案网站备案十堰建设网站
  • 佛山优化网站公司海尔集团网站是怎么做的
  • wordpress主题淘宝客上海seo外包公司
  • 海丰网站建设白宫 wordpress
  • 企业网站模板php建设银行河北省分行网站
  • 重庆网站建设的意义网站如何做h5动态页面
  • 网站建设平台排名非法集资罪提供网站建设
  • wordpress网站专题学生作业网站
  • 360网站优化淘宝客采集网站建设
  • 做网站通常又什么开发完成wordpress禁止评论
  • 自适应网站的图做多大 怎么切wordpress博文图片