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

产地证在什么网站做景观平台设计

产地证在什么网站做,景观平台设计,网站公司怎么做业务,福建响应式网站制作以下是添加了详细注释的代码和参数介绍#xff1a; Transformer 实现及自回归推理 本文展示了如何手动实现一个简化版的Transformer模型#xff0c;并用自回归方式实现一个seq2seq任务#xff0c;例如机器翻译。 导入必要的库 import torch import torch.nn as nn import…以下是添加了详细注释的代码和参数介绍 Transformer 实现及自回归推理 本文展示了如何手动实现一个简化版的Transformer模型并用自回归方式实现一个seq2seq任务例如机器翻译。 导入必要的库 import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F import numpy as np定义位置编码 Transformer 使用位置编码来捕捉序列中的位置信息。 class PositionalEncoding(nn.Module):def __init__(self, d_model, max_len5000):super(PositionalEncoding, self).__init__()pe torch.zeros(max_len, d_model)position torch.arange(0, max_len, dtypetorch.float).unsqueeze(1)div_term torch.exp(torch.arange(0, d_model, 2).float() * (-np.log(10000.0) / d_model))pe[:, 0::2] torch.sin(position * div_term)pe[:, 1::2] torch.cos(position * div_term)pe pe.unsqueeze(0).transpose(0, 1)self.register_buffer(pe, pe)def forward(self, x):return x self.pe[:x.size(0), :]参数介绍 d_model: 词嵌入和位置编码的维度。max_len: 序列的最大长度。 定义自注意力机制 class MultiHeadAttention(nn.Module):def __init__(self, d_model, num_heads):super(MultiHeadAttention, self).__init__()self.num_heads num_headsself.d_model d_modelassert d_model % num_heads 0self.depth d_model // num_headsself.wq nn.Linear(d_model, d_model)self.wk nn.Linear(d_model, d_model)self.wv nn.Linear(d_model, d_model)self.dense nn.Linear(d_model, d_model)def split_heads(self, x, batch_size):x x.view(batch_size, -1, self.num_heads, self.depth)return x.permute(0, 2, 1, 3)def forward(self, v, k, q, mask):batch_size q.size(0)q self.split_heads(self.wq(q), batch_size)k self.split_heads(self.wk(k), batch_size)v self.split_heads(self.wv(v), batch_size)matmul_qk torch.matmul(q, k.transpose(-1, -2))dk torch.tensor(k.size(-1)).float()scaled_attention_logits matmul_qk / torch.sqrt(dk)if mask is not None:scaled_attention_logits (mask * -1e9)attention_weights F.softmax(scaled_attention_logits, dim-1)output torch.matmul(attention_weights, v)output output.permute(0, 2, 1, 3).contiguous()output output.view(batch_size, -1, self.d_model)return self.dense(output)参数介绍 d_model: 词嵌入和注意力机制的维度。num_heads: 注意力头的数量。 定义前馈神经网络 class FeedForward(nn.Module):def __init__(self, d_model, dff):super(FeedForward, self).__init__()self.linear1 nn.Linear(d_model, dff)self.linear2 nn.Linear(dff, d_model)def forward(self, x):return self.linear2(F.relu(self.linear1(x)))参数介绍 d_model: 词嵌入的维度。dff: 前馈神经网络的隐藏层维度。 定义编码器层 class EncoderLayer(nn.Module):def __init__(self, d_model, num_heads, dff, dropout0.1):super(EncoderLayer, self).__init__()self.mha MultiHeadAttention(d_model, num_heads)self.ffn FeedForward(d_model, dff)self.layernorm1 nn.LayerNorm(d_model)self.layernorm2 nn.LayerNorm(d_model)self.dropout1 nn.Dropout(dropout)self.dropout2 nn.Dropout(dropout)def forward(self, x, mask):attn_output self.mha(x, x, x, mask)out1 self.layernorm1(x self.dropout1(attn_output))ffn_output self.ffn(out1)out2 self.layernorm2(out1 self.dropout2(ffn_output))return out2参数介绍 d_model: 词嵌入和注意力机制的维度。num_heads: 注意力头的数量。dff: 前馈神经网络的隐藏层维度。dropout: Dropout 概率。 定义编码器 class Encoder(nn.Module):def __init__(self, num_layers, d_model, num_heads, dff, input_vocab_size, max_len, dropout0.1):super(Encoder, self).__init__()self.d_model d_modelself.num_layers num_layersself.embedding nn.Embedding(input_vocab_size, d_model)self.pos_encoding PositionalEncoding(d_model, max_len)self.enc_layers nn.ModuleList([EncoderLayer(d_model, num_heads, dff, dropout) for _ in range(num_layers)])self.dropout nn.Dropout(dropout)def forward(self, x, mask):seq_len x.size(1)x self.embedding(x)x * torch.sqrt(torch.tensor(self.d_model, dtypetorch.float32))x self.pos_encoding(x.permute(1, 0, 2))x x.permute(1, 0, 2)x self.dropout(x)for i in range(self.num_layers):x self.enc_layers[i](x, mask)return x参数介绍 num_layers: 编码器层的数量。d_model: 词嵌入和注意力机制的维度。num_heads: 注意力头的数量。dff: 前馈神经网络的隐藏层维度。input_vocab_size: 输入词汇表大小。max_len: 序列的最大长度。dropout: Dropout 概率。 定义解码器层 class DecoderLayer(nn.Module):def __init__(self, d_model, num_heads, dff, dropout0.1):super(DecoderLayer, self).__init__()self.mha1 MultiHeadAttention(d_model, num_heads)self.mha2 MultiHeadAttention(d_model, num_heads)self.ffn FeedForward(d_model, dff)self.layernorm1 nn.LayerNorm(d_model)self.layernorm2 nn.LayerNorm(d_model)self.layernorm3 nn.LayerNorm(d_model)self.dropout1 nn.Dropout(dropout)self.dropout2 nn.Dropout(dropout)self.dropout3 nn.Dropout(dropout)def forward(self, x, enc_output, look_ahead_mask, padding_mask):attn1 self.mha1(x, x, x, look_ahead_mask)attn1 self.dropout1(attn1)out1 self.layernorm1(attn1 x)attn2 self.mha2(enc_output, enc_output, out1, padding_mask)attn2 self.dropout2(attn2)out2 self.layernorm2(attn2 out1)ffn_output self.ffn(out2)ffn_output self.dropout3(ffn_output)out3 self.layernorm3(ffn_output out2)return out3参数介绍 d_model: 词嵌入和注意力机制的维度。num_heads: 注意力头的数量。dff: 前馈神经网络的隐藏层维度。dropout: Dropout 概率。 定义解码器 class Decoder(nn.Module):def __init__(self, num_layers, d_model, num_heads, dff, target_vocab_size, max_len, dropout0.1):super(Decoder, self).__init__()self.d_model d_modelself.num_layers num_layersself.embedding nn.Embedding(target_vocab_size, d_model)self.pos_encoding PositionalEncoding(d_model, max_len)self.dec_layers nn.ModuleList([DecoderLayer(d_model, num_heads, dff, dropout) for _ in range(num_layers)])self.dropout nn.Dropout(dropout)def forward(self, x, enc_output, look_ahead_mask, padding_mask):seq_len x.size(1)attention_weights {}x self.embedding(x)x * torch.sqrt(torch.tensor(self.d_model, dtypetorch.float32))x self.pos_encoding(x.permute(1, 0, 2))x x.permute(1, 0, 2)x self.dropout(x)for i in range(self.num_layers):x self.dec_layers[i](x, enc_output, look_ahead_mask, padding_mask)return x参数介绍 num_layers: 解码器层的数量。d_model: 词嵌入和注意力机制的维度。num_heads: 注意力头的数量。dff: 前馈神经网络的隐藏层维度。target_vocab_size: 目标词汇表大小。max_len: 序列的最大长度。dropout: Dropout 概率。 定义Transformer模型 class Transformer(nn.Module):def __init__(self, num_layers, d_model, num_heads, dff, input_vocab_size, target_vocab_size, pe_input, pe_target, dropout0.1):super(Transformer, self).__init__()self.encoder Encoder(num_layers, d_model, num_heads, dff, input_vocab_size, pe_input, dropout)self.decoder Decoder(num_layers, d_model, num_heads, dff, target_vocab_size, pe_target, dropout)self.final_layer nn.Linear(d_model, target_vocab_size)def forward(self, inp, tar, enc_padding_mask, look_ahead_mask, dec_padding_mask):enc_output self.encoder(inp, enc_padding_mask)dec_output self.decoder(tar, enc_output, look_ahead_mask, dec_padding_mask)final_output self.final_layer(dec_output)return final_output参数介绍 num_layers: 编码器和解码器层的数量。d_model: 词嵌入和注意力机制的维度。num_heads: 注意力头的数量。dff: 前馈神经网络的隐藏层维度。input_vocab_size: 输入词汇表大小。target_vocab_size: 目标词汇表大小。pe_input: 输入序列的最大长度。pe_target: 目标序列的最大长度。dropout: Dropout 概率。 创建掩码 def create_padding_mask(seq):seq torch.eq(seq, 0)return seq[:, None, None, :]def create_look_ahead_mask(size):mask torch.triu(torch.ones((size, size)), 1)return mask自回归推理 实现一个简化的自回归推理过程 def generate_text(model, input_sequence, start_token, max_length, target_vocab_size):generated [start_token]model.eval()enc_padding_mask create_padding_mask(input_sequence)with torch.no_grad():enc_output model.encoder(input_sequence, enc_padding_mask)for _ in range(max_length):dec_input torch.tensor(generated).unsqueeze(0)look_ahead_mask create_look_ahead_mask(dec_input.size(1))dec_padding_mask create_padding_mask(dec_input)with torch.no_grad():output model.decoder(dec_input, enc_output, look_ahead_mask, dec_padding_mask)output model.final_layer(output)next_token torch.argmax(output[:, -1, :], dim-1).item()generated.append(next_token)if next_token eos_token:breakreturn generated参数介绍 model: 训练好的Transformer模型。input_sequence: 输入的序列张量。start_token: 生成序列的开始标记。max_length: 生成序列的最大长度。target_vocab_size: 目标词汇表大小。 使用示例 创建一个简单的模型并进行文本生成 input_vocab_size 1000 # 输入词汇表大小 target_vocab_size 1000 # 目标词汇表大小 max_len 50 # 序列最大长度 num_layers 2 # 编码器和解码器层的数量 d_model 512 # 词嵌入和注意力机制的维度 num_heads 8 # 注意力头的数量 dff 2048 # 前馈神经网络的隐藏层维度# 创建Transformer模型 transformer Transformer(num_layers, d_model, num_heads, dff, input_vocab_size, target_vocab_size, max_len, max_len)# 输入序列假设输入序列为[1, 2, 3, 4, 0, 0, 0] input_sequence torch.tensor([[1, 2, 3, 4, 0, 0, 0]])# 假设开始标记为1结束标记为2 start_token 1 eos_token 2# 生成序列 generated_sequence generate_text(transformer, input_sequence, start_token, max_length20, target_vocab_sizetarget_vocab_size) print(Generated sequence:, generated_sequence)以上代码展示了一个简化的Transformer模型的实现包括位置编码、自注意力机制、前馈神经网络、编码器层、解码器层、编码器和解码器整体的实现以及一个基本的自回归推理过程。你可以根据需要进行调整和扩展。 关于mask的解释 以下关于掩码函数 create_padding_mask 和 create_look_ahead_mask 的详细介绍以及示例。 create_padding_mask 该函数用于生成填充掩码以忽略序列中的填充值通常是0。在Transformer模型中填充掩码用于屏蔽掉填充值在计算注意力时的影响。 代码实现 def create_padding_mask(seq):seq torch.eq(seq, 0) # 查找填充值假设填充值为0返回一个布尔张量return seq[:, None, None, :] # 扩展维度以适配注意力机制中的广播示例 假设我们有一个输入序列其中0是填充值 seq torch.tensor([[7, 6, 0, 0, 0], [1, 2, 3, 0, 0]])padding_mask create_padding_mask(seq) print(padding_mask)输出 tensor([[[[False, False, True, True, True]]],[[[False, False, False, True, True]]]])在输出中True 表示填充值的位置这些位置将在计算注意力时被忽略。 create_look_ahead_mask 该函数用于生成前瞻掩码以确保解码器中的每个位置只能看到该位置之前的序列不能看到未来的信息。在自回归生成中前瞻掩码用于防止解码器在生成下一个标记时看到未来的标记。 代码实现 def create_look_ahead_mask(size):mask torch.triu(torch.ones((size, size)), 1) # 生成上三角矩阵主对角线以上的元素为1return mask # 返回前瞻掩码示例 假设我们有一个序列长度为5 size 5 look_ahead_mask create_look_ahead_mask(size) print(look_ahead_mask)输出 tensor([[0., 1., 1., 1., 1.],[0., 0., 1., 1., 1.],[0., 0., 0., 1., 1.],[0., 0., 0., 0., 1.],[0., 0., 0., 0., 0.]])在输出中1 表示被掩盖的位置这些位置在计算注意力时将被屏蔽。 综合示例 结合以上两种掩码假设我们有以下输入序列 seq torch.tensor([[7, 6, 0, 0, 0], [1, 2, 3, 0, 0]]) size seq.size(1)padding_mask create_padding_mask(seq) look_ahead_mask create_look_ahead_mask(size)print(Padding Mask:\n, padding_mask) print(Look Ahead Mask:\n, look_ahead_mask)输出 Padding Mask:tensor([[[[False, False, True, True, True]]],[[[False, False, False, True, True]]]]) Look Ahead Mask:tensor([[0., 1., 1., 1., 1.],[0., 0., 1., 1., 1.],[0., 0., 0., 1., 1.],[0., 0., 0., 0., 1.],[0., 0., 0., 0., 0.]])在实际使用中编码器使用 padding_mask 来屏蔽填充值的影响解码器则同时使用 look_ahead_mask 和 padding_mask 来屏蔽未来标记和填充值的影响。
http://www.ho-use.cn/article/10812089.html

相关文章:

  • 门户网站制作的公司网站空间如何选择
  • 南宁网站建设公司排行大连筑成建设集团有限公司网站
  • 深圳网站建设联雅wordpress哪个版本
  • 网站开发建设费用包括那些大型 交友 网站 建设 公司
  • 网站建设与维护结课论文关键词站长工具
  • 做视频找素材的网站有哪些网站建设如何缴纳印花税
  • 官方网站 建设情况汇报长沙做网站公司 上联网络
  • 做写字楼的网站有哪些资料聊城的网站制作公司
  • 夸克建站系统官网佛山制作网站公司吗
  • 阿里云网站空间网站开发广告语
  • 网站开发是什么部门电子图书网站建设
  • 免费的企业建站cms网站开发属于软件开发行业吗
  • 网站会员注册系统怎么做视频专业网站建设公司哪里好
  • 卖鞋推广引流方法惠州百度seo哪家好
  • 最大的网站模板网小程序嵌套wordpress
  • 广东网站建设服务python基础教程期末考试
  • 建设手机网站的方案wordpress更新文章
  • 马鞍山北京网站建设品牌形象策划
  • 网站开发前端指什么软件自媒体营销推广
  • 网站备案要花钱吗网络营销方式ppt
  • 网站建设策划书5000字工作室设计图
  • ps怎样做网站大图大连做网站优化
  • 网站首页图片素材长图怎么给自己的网站做排名
  • 不关闭网站 备案网站搭建 虚拟空间
  • 巩义网站建设案例珠海做网站找哪家好
  • 在线网站制作系统微信公众号做特效的网站
  • 广东省东莞市建设培训中心网站做网上推广
  • 网站建设江阴建网站做联盟
  • js 做网站电子商务网站建设与管理的总结
  • 郑州微信网站建设在线电影网站建设论文