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

网站如何做视频教程公司介绍ppt制作模板

网站如何做视频教程,公司介绍ppt制作模板,网络营销策略定义,应用中心安装在Transformer模型中#xff0c;自注意力#xff08;Self-Attention#xff09;是核心组件#xff0c;用于捕捉输入序列中不同位置之间的关系。自注意力机制通过计算每个标记与其他所有标记之间的注意力权重#xff0c;然后根据这些权重对输入序列进行加权求和#xff0c…在Transformer模型中自注意力Self-Attention是核心组件用于捕捉输入序列中不同位置之间的关系。自注意力机制通过计算每个标记与其他所有标记之间的注意力权重然后根据这些权重对输入序列进行加权求和从而生成新的表示。下面是实现自注意力机制的代码及其详细说明。 自注意力机制的实现 1. 计算注意力得分Scaled Dot-Product Attention 自注意力机制的基本步骤包括以下几个部分 线性变换将输入序列通过三个不同的线性变换层得到查询Query、键Key和值Value矩阵。计算注意力得分通过点积计算查询与键的相似度再除以一个缩放因子通常是键的维度的平方根以稳定梯度。应用掩码在计算注意力得分后应用掩码如果有避免未来信息泄露用于解码器中的自注意力。计算注意力权重通过softmax函数将注意力得分转换为概率分布。加权求和使用注意力权重对值进行加权求和得到新的表示。 2. 多头注意力机制Multi-Head Attention 为了捕捉不同子空间的特征Transformer使用多头注意力机制。通过将查询、键和值分割成多个头每个头独立地计算注意力然后将所有头的输出连接起来并通过一个线性层进行组合。 自注意力机制代码实现 import torch import torch.nn as nn import torch.nn.functional as F# Scaled Dot-Product Attention def scaled_dot_product_attention(query, key, value, maskNone):d_k query.size(-1)scores torch.matmul(query, key.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtypetorch.float32))print(fScores shape: {scores.shape}) # (batch_size, num_heads, seq_length, seq_length)if mask is not None:scores scores.masked_fill(mask 0, float(-inf))attention_weights F.softmax(scores, dim-1)print(fAttention weights shape: {attention_weights.shape}) # (batch_size, num_heads, seq_length, seq_length)output torch.matmul(attention_weights, value)print(fOutput shape after attention: {output.shape}) # (batch_size, num_heads, seq_length, d_k)return output, attention_weights# Multi-Head Attention class MultiHeadAttention(nn.Module):def __init__(self, d_model, num_heads):super(MultiHeadAttention, self).__init__()assert d_model % num_heads 0self.d_model d_modelself.num_heads num_headsself.d_k d_model // num_headsself.linear_query nn.Linear(d_model, d_model)self.linear_key nn.Linear(d_model, d_model)self.linear_value nn.Linear(d_model, d_model)self.linear_out nn.Linear(d_model, d_model)def forward(self, query, key, value, maskNone):batch_size query.size(0)# Linear projectionsquery self.linear_query(query)key self.linear_key(key)value self.linear_value(value)print(fQuery shape after linear: {query.shape}) # (batch_size, seq_length, d_model)print(fKey shape after linear: {key.shape}) # (batch_size, seq_length, d_model)print(fValue shape after linear: {value.shape}) # (batch_size, seq_length, d_model)# Split into num_headsquery query.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)key key.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)value value.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)print(fQuery shape after split: {query.shape}) # (batch_size, num_heads, seq_length, d_k)print(fKey shape after split: {key.shape}) # (batch_size, num_heads, seq_length, d_k)print(fValue shape after split: {value.shape}) # (batch_size, num_heads, seq_length, d_k)# Apply scaled dot-product attentionx, attention_weights scaled_dot_product_attention(query, key, value, mask)# Concatenate headsx x.transpose(1, 2).contiguous().view(batch_size, -1, self.d_model)print(fOutput shape after concatenation: {x.shape}) # (batch_size, seq_length, d_model)# Final linear layerx self.linear_out(x)print(fOutput shape after final linear: {x.shape}) # (batch_size, seq_length, d_model)return x, attention_weights# 示例用法 d_model 512 num_heads 8 batch_size 64 seq_length 10# 假设输入是随机生成的张量 query torch.rand(batch_size, seq_length, d_model) key torch.rand(batch_size, seq_length, d_model) value torch.rand(batch_size, seq_length, d_model)# 创建多头注意力层 mha MultiHeadAttention(d_model, num_heads) output, attention_weights mha(query, key, value)print(最终输出形状:, output.shape) # 最终输出形状: (batch_size, seq_length, d_model) print(注意力权重形状:, attention_weights.shape) # 注意力权重形状: (batch_size, num_heads, seq_length, seq_length)每一步的形状解释 Linear Projections Query, Key, Value分别经过线性变换。形状[batch_size, seq_length, d_model] Split into Heads 将Query, Key, Value分割成多个头。形状[batch_size, num_heads, seq_length, d_k]其中d_k d_model // num_heads Scaled Dot-Product Attention 计算注意力得分Scores。形状[batch_size, num_heads, seq_length, seq_length]计算注意力权重Attention Weights。形状[batch_size, num_heads, seq_length, seq_length]使用注意力权重对Value进行加权求和。形状[batch_size, num_heads, seq_length, d_k] Concatenate Heads 将所有头的输出连接起来。形状[batch_size, seq_length, d_model] Final Linear Layer 通过一个线性层将连接的输出转换为最终的输出。形状[batch_size, seq_length, d_model] 通过这种方式我们可以清楚地看到每一步变换后的张量形状理解自注意力和多头注意力机制的具体实现细节。 代码说明 scaled_dot_product_attention实现了缩放点积注意力机制计算查询和键的点积应用掩码计算softmax然后使用权重对值进行加权求和。MultiHeadAttention实现了多头注意力机制包括线性变换、分割、缩放点积注意力和最后的线性变换。 多头注意力机制的细节 线性变换将输入序列通过线性层转换为查询、键和值的矩阵。分割头将查询、键和值的矩阵分割为多个头每个头的维度是[batch_size, num_heads, seq_length, d_k]。缩放点积注意力对每个头分别计算缩放点积注意力。连接头将所有头的输出连接起来得到[batch_size, seq_length, d_model]的张量。线性变换通过一个线性层将连接的输出转换为最终的输出。
http://www.pierceye.com/news/585924/

相关文章:

  • 智慧团建网站怎么转团关系app制作开发小程序制作开发
  • 誉字号网站wordpress 展示模板下载
  • 网站不接入备案成都市建设工程质量协会网站
  • 企业网站html网站开发济南招聘
  • 网站html优化方法音乐网站开发参考文献
  • 网站建设及推广方案ppt模板微信小程序开发工具下载哪个版本
  • 固安县城乡和住房建设局网站科技公司手机端网站
  • 寿光网站建设思科企业网络拓扑图
  • 中国建设银行河南省分行网站建筑人才服务中心官网
  • 响应式app网站模板单页淘宝客网站2014年行吗
  • 西安网站推广优化高端定制网站开发设计建站流程
  • m版网站开发公司如何做网络推广营销
  • 济宁商城网站开发设计网址源码在线查看
  • 网站建设公司介绍百度电脑怎么用wordpress
  • 宛城区网站建设广东seo推广方案
  • 北京建网站定制价格网站风格总结
  • 如何建设一个购物网站wordpress 优酷插件
  • 你们网站做301网站开发规模和工作量的计算
  • 班级网站建设甘肃住房和城乡建设厅网站
  • 网站建设哪家性价比高住房和城乡建设部网站办事大厅里边
  • 外贸小语种网站建设深圳市保障性住房申请官网
  • 阿里云买域名后怎么做网站wordpress创建空白页面
  • 小型公司建网站腾讯风铃wordpress
  • 广州做模板网站的公司怎么区分营销型和展示型的网站
  • 网站推广服务外包1688阿里巴巴国际站首页
  • 深圳学校网站建设wordpress rossi 汉化
  • 课程网站课程资源建设北京吴勇设计工作室
  • 网站建设费用什么意思软件制作专业
  • 扬中本地网站外国做美食视频网站
  • 深圳手机网站制作价钱阜阳中国建设银行官网站