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

网站建设 网址导航上海微盟企业发展有限公司

网站建设 网址导航,上海微盟企业发展有限公司,太原网站建设杰迅,有哪些做外贸免费的网站原理讲解 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解 自注意力机制 import torch import torch.nn as nn# 自注意力机制 class SelfAttention(nn.Module):def __init__(self, input…

原理讲解

【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

自注意力机制

import torch
import torch.nn as nn# 自注意力机制
class SelfAttention(nn.Module):def __init__(self, input_dim):super(SelfAttention, self).__init__()self.query = nn.Linear(input_dim, input_dim)self.key = nn.Linear(input_dim, input_dim)self.value = nn.Linear(input_dim, input_dim)        def forward(self, x, mask=None):batch_size, seq_len, input_dim = x.shapeq = self.query(x)k = self.key(x)v = self.value(x)atten_weights = torch.matmul(q, k.transpose(-2, -1)) / torch.sqrt(torch.tensor(input_dim, dtype=torch.float))if mask is not None:mask = mask.unsqueeze(1)attn_weights = attn_weights.masked_fill(mask == 0, float('-inf'))        atten_scores = torch.softmax(atten_weights, dim=-1)attented_values = torch.matmul(atten_scores, v)return attented_values# 自动填充函数
def pad_sequences(sequences, max_len=None):batch_size = len(sequences)input_dim = sequences[0].shape[-1]lengths = torch.tensor([seq.shape[0] for seq in sequences])max_len = max_len or lengths.max().item()padded = torch.zeros(batch_size, max_len, input_dim)for i, seq in enumerate(sequences):seq_len = seq.shape[0]padded[i, :seq_len, :] = seqmask = torch.arange(max_len).expand(batch_size, max_len) < lengths.unsqueeze(1)return padded, mask.long()if __name__ == '__main__':batch_size = 2seq_len = 3input_dim = 128seq_len_1 = 3seq_len_2 = 5x1 = torch.randn(seq_len_1, input_dim)            x2 = torch.randn(seq_len_2, input_dim)target_seq_len = 10    padded_x, mask = pad_sequences([x1, x2], target_seq_len)selfattention = SelfAttention(input_dim)    attention = selfattention(padded_x)print(attention)

多头自注意力机制

import torch
import torch.nn as nn# 定义多头自注意力模块
class MultiHeadSelfAttention(nn.Module):def __init__(self, input_dim, num_heads):super(MultiHeadSelfAttention, self).__init__()self.num_heads = num_headsself.head_dim = input_dim // num_headsself.query = nn.Linear(input_dim, input_dim)self.key = nn.Linear(input_dim, input_dim)self.value = nn.Linear(input_dim, input_dim)        def forward(self, x, mask=None):batch_size, seq_len, input_dim = x.shape# 将输入向量拆分为多个头## transpose(1,2)后变成 (batch_size, self.num_heads, seq_len, self.head_dim)形式q = self.query(x).view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2)k = self.key(x).view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2)v = self.value(x).view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2)# 计算注意力权重attn_weights = torch.matmul(q, k.transpose(-2, -1)) / torch.sqrt(torch.tensor(self.head_dim, dtype=torch.float32))# 应用 padding maskif mask is not None:# mask: (batch_size, seq_len) -> (batch_size, 1, 1, seq_len) 用于广播mask = mask.unsqueeze(1).unsqueeze(2)  # 扩展维度以便于广播attn_weights = attn_weights.masked_fill(mask == 0, float('-inf'))        attn_scores = torch.softmax(attn_weights, dim=-1)# 注意力加权求和attended_values = torch.matmul(attn_scores, v).transpose(1, 2).contiguous().view(batch_size, seq_len, input_dim)return attended_values# 自动填充函数
def pad_sequences(sequences, max_len=None):batch_size = len(sequences)input_dim = sequences[0].shape[-1]lengths = torch.tensor([seq.shape[0] for seq in sequences])max_len = max_len or lengths.max().item()padded = torch.zeros(batch_size, max_len, input_dim)for i, seq in enumerate(sequences):seq_len = seq.shape[0]padded[i, :seq_len, :] = seqmask = torch.arange(max_len).expand(batch_size, max_len) < lengths.unsqueeze(1)return padded, mask.long()if __name__ == '__main__':heads = 2batch_size = 2seq_len_1 = 3seq_len_2 = 5input_dim = 128x1 = torch.randn(seq_len_1, input_dim)            x2 = torch.randn(seq_len_2, input_dim)target_seq_len = 10    padded_x, mask = pad_sequences([x1, x2], target_seq_len)multiheadattention = MultiHeadSelfAttention(input_dim, heads)attention = multiheadattention(padded_x, mask)    print(attention)

文章转载自:

http://J4A4IHDG.ggpkk.cn
http://Fe9wZuAT.ggpkk.cn
http://LuRciVn4.ggpkk.cn
http://lbfDKfOZ.ggpkk.cn
http://qI5hdFut.ggpkk.cn
http://oE1qOuZp.ggpkk.cn
http://0Hw7zClf.ggpkk.cn
http://duN3sTg6.ggpkk.cn
http://JztuvP1m.ggpkk.cn
http://ULYJgC8h.ggpkk.cn
http://5E5K4xkN.ggpkk.cn
http://jJQVeqkG.ggpkk.cn
http://YMheZf8g.ggpkk.cn
http://c1A0tmSO.ggpkk.cn
http://987Hf38E.ggpkk.cn
http://8mdIQusv.ggpkk.cn
http://7p5ooGBj.ggpkk.cn
http://VEsCLEUP.ggpkk.cn
http://1zWuuzk2.ggpkk.cn
http://fKNHizt3.ggpkk.cn
http://EtHBlEEg.ggpkk.cn
http://RTqsLuXB.ggpkk.cn
http://OvPWk2Tb.ggpkk.cn
http://h1KjI7SU.ggpkk.cn
http://zpCDvw6Z.ggpkk.cn
http://XDhj7bnR.ggpkk.cn
http://mQ2sZBjv.ggpkk.cn
http://cTvmceZY.ggpkk.cn
http://df10w5NW.ggpkk.cn
http://qTCnYJnH.ggpkk.cn
http://www.dtcms.com/wzjs/778232.html

相关文章:

  • 个人网站html源码vi设计方案
  • 网站生成手机版金华网站设计公司
  • 网站的模版亚马逊入驻费用及条件
  • 网站策划的工作职责东营聊城网站建设
  • 易龙天做的网站怎么样网站建设 诺德中心
  • 可以查授权的网站怎么做鞍山人才网档案查询
  • 石家庄网站优化多少钱asp网站开发教案
  • 宁德市蕉城区建设局网站ui模板免费下载
  • 站长查询做现货黄金看什么网站
  • 甘肃肃第八建设集团网站制作游戏需要什么技术
  • 网站播放视频插件广东省建设工程交易中心
  • 公司做网站的费用php 视频网站开发
  • asp网站安装到空间最好的开发网站建设
  • 网站建设都需要网站建设成为
  • 厦门建设局网站技227司学校模板建站优缺点
  • 建物流网站昵图网免费素材图库
  • 黄冈网站推广软件费用是多少办公室设计公司
  • 网站建设官方网旺道seo软件技术
  • 山东省聊城建设学校网站网站不见了
  • 报网站开发培训班上海市建设工程交易服务中心
  • 做的网站每年都要交费吗关键词吉他谱
  • 网站开发 兼容模式wordpress定义小工具栏
  • 网站开发员一月多少工资做网站规避什么
  • 兴化网站建设价格椒江做网站
  • 品牌网站建设创意新颖安徽湖滨建设集团有限公司网站
  • 网站建设企业有哪些方面正安县网站seo优化排名
  • 网站托管找工业互联网平台的意义有哪些
  • 丽水网站开发wordpress无域名ip访问
  • 广东网站关键词排名磁力搜索神器
  • 一个完整的电商网站开发周期网页制作专业软件有哪些