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

网站制作中文版熊猫seo实战培训

网站制作中文版,熊猫seo实战培训,即买即送的网站有哪些,柳市做网站建设个人在网上看到的实现好像都长得奇奇怪怪的,没有简洁的感觉,因此在这里给出一种易读的GQA实现方法: import torch import torch.nn as nn import torch.nn.functional as Fclass GroupedQueryAttention(nn.Module):def __init__(self, embed…

个人在网上看到的实现好像都长得奇奇怪怪的,没有简洁的感觉,因此在这里给出一种易读的GQA实现方法:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass GroupedQueryAttention(nn.Module):def __init__(self, embed_dim, num_heads, num_groups):super().__init__()assert num_heads % num_groups == 0, "num_heads must be divisible by num_groups"self.num_heads = num_headsself.num_groups = num_groupsself.head_dim = embed_dim // num_headsself.group_dim = self.num_groups * self.head_dim  # Correct: num_groups * head_dimself.scale = self.head_dim ** -0.5# Projectionsself.q_proj = nn.Linear(embed_dim, embed_dim)  # Query: full embed_dim for num_headsself.k_proj = nn.Linear(embed_dim, self.group_dim)  # Key: group_dim for num_groupsself.v_proj = nn.Linear(embed_dim, self.group_dim)  # Value: group_dim for num_groupsself.out_proj = nn.Linear(embed_dim, embed_dim)def forward(self, x):batch_size, seq_len, embed_dim = x.shape# Project inputs to q, k, vq = self.q_proj(x)  # Shape: (batch_size, seq_len, embed_dim)k = self.k_proj(x)  # Shape: (batch_size, seq_len, group_dim)v = self.v_proj(x)  # Shape: (batch_size, seq_len, group_dim)# Reshape query for multi-head attentionq = q.view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2)# Shape: (batch_size, num_heads, seq_len, head_dim)# Reshape key and value for grouped attentionk = k.view(batch_size, seq_len, self.num_groups, self.head_dim).transpose(1, 2)# Shape: (batch_size, num_groups, seq_len, head_dim)v = v.view(batch_size, seq_len, self.num_groups, self.head_dim).transpose(1, 2)# Shape: (batch_size, num_groups, seq_len, head_dim)# Repeat k and v to match the number of query headsheads_per_group = self.num_heads // self.num_groupsk = k.repeat_interleave(heads_per_group, dim=1)# Shape: (batch_size, num_heads, seq_len, head_dim)v = v.repeat_interleave(heads_per_group, dim=1)# Shape: (batch_size, num_heads, seq_len, head_dim)# Compute attention scoresscores = torch.matmul(q, k.transpose(-2, -1)) * self.scale# Shape: (batch_size, num_heads, seq_len, seq_len)attn = F.softmax(scores, dim=-1)out = torch.matmul(attn, v)  # Shape: (batch_size, num_heads, seq_len, head_dim)# Reshape and project outputout = out.transpose(1, 2).reshape(batch_size, seq_len, embed_dim)out = self.out_proj(out)  # Shape: (batch_size, seq_len, embed_dim)return out# Test the model
embed_dim = 64
num_heads = 8
num_groups = 4
model = GroupedQueryAttention(embed_dim, num_heads, num_groups)
x = torch.randn(2, 10, embed_dim)  # Input shape: (batch_size, seq_len, embed_dim)
output = model(x)
print(output.shape)  # Expected output: torch.Size([2, 10, 64])

为了读懂GQA,建议读者了解一下MQA的实现,这样顺着读下来会更顺手。

一旦读懂了MQA,GQA的实现思路几乎完全一样,只是多用了一个不太常用的函数tensor.repeat_interleave。关于这个函数,直接点击链接看笔者相关文章就行了,挺好懂的。

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

相关文章:

  • 2013年建设工程发布网站网络整合营销4i原则
  • 公司网站 开源泉州排名推广
  • 温州做网站找哪家好外贸推广平台排名
  • 站长平台seo怎样做好网络营销推广
  • 外贸网站怎么做促销什么是百度快照
  • 中国城乡建设委员会官方网站seo排名优化首页
  • 深圳罗湖企业网站优化济南网站优化公司排名
  • 网站收录差企业培训权威机构
  • 国外网页设计欣赏网站优化推广排名
  • 做好网站建设工作郑州seo技术服务
  • 企业网站是否可以做淘宝客网络公司优化关键词
  • 网站建设长沙长沙百度网站排名优化
  • 个人简介html代码简单百度seo快速排名
  • Thinkphp开发wordpress合肥seo排名收费
  • 网站建设+开源刷seo关键词排名软件
  • 灯饰网站源码网页设计与制作个人网站模板
  • 如何免费制作企业网站不受国内限制的浏览器
  • 有没有专门做奶粉的网站小学培训机构
  • 域名是什么样的百度关键词怎么优化
  • 网站建设方案设计是什么意思济南最新消息今天
  • 做减肥网站漯河搜狗关键词优化排名软件
  • 主流网站seo关键词排名怎么提升
  • 做推广网站公司抖音seo点击软件排名
  • 南通网站建设机构成都本地推广平台
  • wordpress生成地图抖音seo什么意思
  • 怎样拍照产品做网站百度seo怎么查排名
  • 广州专业网站建设有哪些网络营销公司全网推广公司
  • 电子商务网站建设需要哪些步骤海外营销公司
  • 实体店100个营销策略seo快速优化报价
  • 做网站的服务器怎么选页面关键词优化