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

怎么做网站美工长沙小程序开发

怎么做网站美工,长沙小程序开发,网站建设公司兴田德润在那里,校园云网站建设十分推荐看这个UP主的视频,没有特别复杂的数学推导,但是也有一定的深度,看完相信一定会有收获,同时本Blog也可以看成对该视频的总结记录 1.旋转矩阵: 等价于将一个向量逆时针旋转度 我们规定如下记号: 那么…

十分推荐看这个UP主的视频,没有特别复杂的数学推导,但是也有一定的深度,看完相信一定会有收获,同时本Blog也可以看成对该视频的总结记录

1.旋转矩阵:

等价于将一个向量逆时针旋转\theta

我们规定如下记号:

那么有下面几个性质成立:

2.注意力机制:

由于我们现在考虑的都是二维情景,我们就不妨将一个词的Q,K都看成二维向量,也就是:

这样我们可以计算出Q,K的近似度:

但是这个式子没有考虑位置信息,于是我们尝试把刚刚的旋转矩阵融合进来:

其中,m,n就是每个词的位置编号信息,这样我们就考虑到了这两个向量的夹角也就是相对位置信息,接下来让我们拓展成高维形式:

这里我们把一个向量的维度两个分为一组进行维度的扩升,比较直观的理解就是:

我们可以把一个d维的向量看成d//2个平面的叠加,每一个平面我们利用刚刚的旋转矩阵得到,同时注意到这个f随着维度越来越高不断减小,类似于时间的年月日,以此定义一个词的位置信息

这样我们将q,k和改矩阵相乘就添加了位置信息:

最后,考虑到该矩阵为稀疏矩阵,我们可以直接转换成如下形式:

至此,ROPE的介绍就结束了

下面是代码的实现:

import torch
import torch.nn as nn
import torch.nn.functional as F
import math# %%def sinusoidal_position_embedding(batch_size, nums_head, max_len, output_dim, device):# (max_len, 1)position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(-1)# (output_dim//2)ids = torch.arange(0, output_dim // 2, dtype=torch.float)  # 即公式里的i, i的范围是 [0,d/2]theta = torch.pow(10000, -2 * ids / output_dim)# (max_len, output_dim//2)embeddings = position * theta  # 即公式里的:pos / (10000^(2i/d))# (max_len, output_dim//2, 2)embeddings = torch.stack([torch.sin(embeddings), torch.cos(embeddings)], dim=-1)# (bs, head, max_len, output_dim//2, 2)embeddings = embeddings.repeat((batch_size, nums_head, *([1] * len(embeddings.shape))))  # 在bs维度重复,其他维度都是1不重复# (bs, head, max_len, output_dim)# reshape后就是:偶数sin, 奇数cos了embeddings = torch.reshape(embeddings, (batch_size, nums_head, max_len, output_dim))embeddings = embeddings.to(device)return embeddings# %%def RoPE(q, k):# q,k: (bs, head, max_len, output_dim)batch_size = q.shape[0]nums_head = q.shape[1]max_len = q.shape[2]output_dim = q.shape[-1]# (bs, head, max_len, output_dim)pos_emb = sinusoidal_position_embedding(batch_size, nums_head, max_len, output_dim, q.device)# cos_pos,sin_pos: (bs, head, max_len, output_dim)# 看rope公式可知,相邻cos,sin之间是相同的,所以复制一遍。如(1,2,3)变成(1,1,2,2,3,3)cos_pos = pos_emb[...,  1::2].repeat_interleave(2, dim=-1)  # 将奇数列信息抽取出来也就是cos 拿出来并复制sin_pos = pos_emb[..., ::2].repeat_interleave(2, dim=-1)  # 将偶数列信息抽取出来也就是sin 拿出来并复制# q,k: (bs, head, max_len, output_dim)q2 = torch.stack([-q[..., 1::2], q[..., ::2]], dim=-1)q2 = q2.reshape(q.shape)  # reshape后就是正负交替了# 更新qw, *对应位置相乘q = q * cos_pos + q2 * sin_posk2 = torch.stack([-k[..., 1::2], k[..., ::2]], dim=-1)k2 = k2.reshape(k.shape)# 更新kw, *对应位置相乘k = k * cos_pos + k2 * sin_posreturn q, k# %%def attention(q, k, v, mask=None, dropout=None, use_RoPE=True):# q.shape: (bs, head, seq_len, dk)# k.shape: (bs, head, seq_len, dk)# v.shape: (bs, head, seq_len, dk)if use_RoPE:q, k = RoPE(q, k)#q,k维度不变,只是添加了位置编码d_k = k.size()[-1]att_logits = torch.matmul(q, k.transpose(-2, -1))  # (bs, head, seq_len, seq_len)att_logits /= math.sqrt(d_k)if mask is not None:att_logits = att_logits.masked_fill(mask == 0, -1e9)  # mask掉为0的部分,设为无穷大att_scores = F.softmax(att_logits, dim=-1)  # (bs, head, seq_len, seq_len)if dropout is not None:att_scores = dropout(att_scores)# (bs, head, seq_len, seq_len) * (bs, head, seq_len, dk) = (bs, head, seq_len, dk)return torch.matmul(att_scores, v), att_scoresif __name__ == '__main__':# (bs, head, seq_len, dk)q = torch.randn((8, 12, 10, 32))k = torch.randn((8, 12, 10, 32))v = torch.randn((8, 12, 10, 32))res, att_scores = attention(q, k, v, mask=None, dropout=None, use_RoPE=True)# (bs, head, seq_len, dk),  (bs, head, seq_len, seq_len)print(res.shape, att_scores.shape)

该程序实现了一个带ROPE编码的多头注意力机制,理解起来还是不困难的。下一节就是介绍如何构建deepseek用到的MLA注意力机制。


文章转载自:

http://s6XqnNZ9.jfxth.cn
http://hlmaQqR9.jfxth.cn
http://fnL6lCSn.jfxth.cn
http://WyYvLAPB.jfxth.cn
http://jvdTDayf.jfxth.cn
http://ZktI6Wke.jfxth.cn
http://8eLnnBD5.jfxth.cn
http://y9d5k46N.jfxth.cn
http://0FRxV5JX.jfxth.cn
http://aJZQ5M4D.jfxth.cn
http://ojWUs5x2.jfxth.cn
http://3gd9L87o.jfxth.cn
http://BtYTAuqf.jfxth.cn
http://mnvjqwNq.jfxth.cn
http://z9wDfByJ.jfxth.cn
http://7mv0srrO.jfxth.cn
http://IG9yUNIk.jfxth.cn
http://1GgCnimH.jfxth.cn
http://HrfaJCsu.jfxth.cn
http://iOaeqxSk.jfxth.cn
http://DGlaDtTz.jfxth.cn
http://bjOGFE6T.jfxth.cn
http://5qD1Xp4z.jfxth.cn
http://sMVGHJO8.jfxth.cn
http://rch0cS5w.jfxth.cn
http://27iTk7Av.jfxth.cn
http://RpNvRMgZ.jfxth.cn
http://LbPye91u.jfxth.cn
http://WTMTyVRp.jfxth.cn
http://Fh4NgNXS.jfxth.cn
http://www.dtcms.com/wzjs/751790.html

相关文章:

  • 网站建设定价语言做网站
  • 郑州知名网站推广湖南发展最新消息公告
  • 网站代理服务器有问题网站建设设计案例网站logo实验报告
  • 西安网站seo优化公司网站建设运维情况自查报告
  • 合肥企业网站模板建站湖北省利川市建设局网站
  • apache 设置多个网站坪山网站建设信息
  • 宸建设计网站沈阳个人网站建设
  • 凡科 360免费建站住房城乡建设部网站职业资格
  • 重庆市建设工程造价管理总站万网域名管理平台
  • 企业网站建设的过程网站建设对工厂意义
  • 网站做任务佣金wordpress首页调用图片
  • 苏州网站建设自学朝青板块网站建设
  • 自己建设的手机网站做百度地图定位妇幼网站建设ppt
  • 百度网站建设要多少钱手机网站方案
  • 网络科技公司 网站建设棋牌软件开发搭建
  • 又一个 wordpress 站点站长之家爱站网
  • 做类似起点的网站网站一般多少钱一年
  • 网站表格布局检测网站点击量
  • 江苏国龙翔建设网站朗润装饰成都装修公司官网
  • 小域名 网站备案东莞网站建设黄页免费软件
  • 营销型网站建设营销型网站建设信息流广告模板
  • 新都区网站建设什么查网站是否降权
  • 计算机科学与技术网站用腾讯云做淘宝客购物网站视频
  • 大学生简历制作网站专业建设网站制作
  • 个人网站自助建站免费建网站服务最好的公司
  • 泰州网站制作费用怎么学习建设网站
  • 成都微网站系统wordpress 二级导航制作
  • 这么联系做网站推广电脑网
  • 网站模板打包企业应如何进行网站建设
  • 网站做担保交易平台合肥网站设计公司