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

宜兴市住房和城乡建设局网站seo工资多少

宜兴市住房和城乡建设局网站,seo工资多少,地方门户信息网站建设方案,淘宝seo是指什么11. encoder 打造完整 Transformer 编码器:逐步实现高效深度学习模块 在深入理解了编码器块的核心结构后,下一步就是实现一个完整的 Transformer 编码器。该编码器将输入序列转换为高级语义向量,并为后续的解码或其他任务模块提供高质量的特…

11. encoder

打造完整 Transformer 编码器:逐步实现高效深度学习模块

在深入理解了编码器块的核心结构后,下一步就是实现一个完整的 Transformer 编码器。该编码器将输入序列转换为高级语义向量,并为后续的解码或其他任务模块提供高质量的特征表示。今天我们将详细解析编码器的每一部分,并附上代码示例,助你轻松掌握 Transformer 的编码器构建。


Transformer 编码器的主要组成部分

一个完整的 Transformer 编码器通常包含以下几个步骤:

  1. 输入嵌入层(Embedding Layer):将输入的词索引转换为高维向量表示。
  2. 位置编码(Positional Encoding):为每个词加上位置信息,使模型能够捕捉词序关系。
  3. 多个编码器块(Encoder Blocks):编码器块堆叠以提取深层次特征,通常包括 6-12 层,视任务而定。
  4. 输出:编码器最终输出的特征向量,将传递给解码器或下游任务模块。

实现完整的 Transformer 编码器类

以下代码实现了一个 TransformerEncoder 类,其中包含输入嵌入、位置编码、多个编码器块和 Dropout 层:

import torch
import torch.nn as nn
import mathclass PositionalEncoding(nn.Module):def __init__(self, embed_size, max_length=100):super(PositionalEncoding, self).__init__()self.encoding = torch.zeros(max_length, embed_size)position = torch.arange(0, max_length, dtype=torch.float).unsqueeze(1)div_term = torch.exp(torch.arange(0, embed_size, 2).float() * (-math.log(10000.0) / embed_size))self.encoding[:, 0::2] = torch.sin(position * div_term)self.encoding[:, 1::2] = torch.cos(position * div_term)self.encoding = self.encoding.unsqueeze(0)  # Shape: (1, max_length, embed_size)def forward(self, x):return x + self.encoding[:, :x.size(1), :].to(x.device)class TransformerEncoder(nn.Module):def __init__(self, src_vocab_size, embed_size, num_layers, heads, forward_expansion, dropout, max_length):super(TransformerEncoder, self).__init__()# 输入嵌入层self.word_embedding = nn.Embedding(src_vocab_size, embed_size)self.position_encoding = PositionalEncoding(embed_size, max_length)# 堆叠编码器层self.layers = nn.ModuleList([EncoderBlock(embed_size, heads, forward_expansion, dropout) for _ in range(num_layers)])# Dropout 层self.dropout = nn.Dropout(dropout)def forward(self, x, mask):# 1. 添加词嵌入和位置编码out = self.word_embedding(x)out = self.position_encoding(out)out = self.dropout(out)# 2. 逐层通过编码器块for layer in self.layers:out = layer(out, mask)return out

代码解析:逐步了解 Transformer 编码器

1. 输入嵌入和位置编码

self.word_embedding = nn.Embedding(src_vocab_size, embed_size)
self.position_encoding = PositionalEncoding(embed_size, max_length)
  • word_embedding:将输入的词(以整数索引表示)转换成嵌入向量。
  • position_encoding:为每个词嵌入向量加上位置编码,帮助模型识别词的顺序。

2. 堆叠多个编码器块

self.layers = nn.ModuleList([EncoderBlock(embed_size, heads, forward_expansion, dropout) for _ in range(num_layers)]
)
  • 使用 ModuleList 创建多个 EncoderBlock。每个 EncoderBlock 包含多头自注意力层、前馈神经网络层、残差连接和正则化。
  • num_layers 控制编码器块的数量。通常的设置是 6 层,但可以根据任务需求进行调整。

3. Dropout 层

self.dropout = nn.Dropout(dropout)
  • 使用 Dropout 增强泛化能力,通过随机丢弃一些神经元的输出来防止过拟合。

前向传播过程解析

  1. 词嵌入和位置编码

    out = self.word_embedding(x)
    out = self.position_encoding(out)
    out = self.dropout(out)
    • 将输入序列转换为嵌入向量。
    • 添加位置编码,保留输入序列的顺序信息。
    • 使用 Dropout 防止过拟合。
  2. 通过编码器块层层提取特征

    for layer in self.layers:out = layer(out, mask)
    • 将嵌入后的输出依次传递给每一个编码器块。
    • mask 参数用于在注意力机制中屏蔽掉填充符(padding)等不相关部分,避免模型关注无关信息。

测试 Transformer 编码器

为了确保我们的编码器可以正常工作,编写一些简单的测试代码:

# 设置测试参数
src_vocab_size = 10000  # 假设词汇表大小
embed_size = 512
num_layers = 6
heads = 8
forward_expansion = 4
dropout = 0.1
max_length = 100
seq_length = 20
batch_size = 2# 输入序列
x = torch.randint(0, src_vocab_size, (batch_size, seq_length))  # (batch_size, seq_length)
mask = None  # 暂不使用 mask# 实例化 Transformer 编码器并进行前向传播
encoder = TransformerEncoder(src_vocab_size, embed_size, num_layers, heads, forward_expansion, dropout, max_length)
out = encoder(x, mask)print("编码器的输出形状:", out.shape)  # 预期输出: (batch_size, seq_length, embed_size)
  • 输出形状(batch_size, seq_length, embed_size),例如 (2, 20, 512)

接下来的步骤

  1. 实现解码器块(Decoder Block)
    • 解码器块和编码器类似,但会增加编码器-解码器注意力层,用于从编码器的输出中提取信息。
  2. 实现完整的解码器(Decoder)
    • 将多个解码器块堆叠,构成完整的解码器结构。
  3. 组装完整的 Transformer 模型
    • 结合编码器和解码器,实现完整的 Transformer 模型。

通过这篇文章,我们构建了一个完整的 Transformer 编码器,并了解了编码器的每个模块如何协同工作以提取输入序列的深层次特征。希望这些知识帮助你在 Transformer 的实现和理解上更进一步!如果你对解码器或 Transformer 其他部分感兴趣,欢迎继续阅读或留言讨论!

http://www.hkea.cn/news/933638/

相关文章:

  • 淘宝 客要推广网站怎么做全媒体广告代理
  • 那个b2b网站可以做外贸武汉全网推广
  • 深圳css3网站开发多少钱如何策划一个营销方案
  • 织梦统计网站访问量代码网络营销公司如何建立
  • 外贸营销型网站建设今日最新重大新闻
  • 个性化定制网站长春网络推广优化
  • 合肥庐阳区疫情最新消息seo优化首页
  • h5网站制作接单最新中高风险地区名单
  • 北京市住房城乡建设委网站公司怎么在网上推广
  • 网站建设首页怎样插入视频百度指数在线查询小程序
  • 青州网站制作哪家好aso优化哪家好
  • wordpress做网站优点郑州网站seo优化
  • 宝安做棋牌网站建设找哪家公司好湖南长沙疫情最新消息
  • 四川专业网站建设中国十大企业培训机构排名
  • 怎么切页面做网站灰色词首页排名接单
  • 网站右侧浮动广告代码百度推广代理公司广州
  • 固原建站公司旺道seo推广系统怎么收费
  • 适合做外链的网站海外广告联盟平台推广
  • 建筑模板规格型号郑州厉害的seo顾问
  • ppt做书模板下载网站有哪些内容国际婚恋网站排名
  • 上海网站建设内容更新网络营销策划目的
  • 重庆市建设信息网站关键词查询网
  • 做哪种网站流量大怎么打广告宣传自己的产品
  • 免费表白网站制作seo网络优化推广
  • 网站建设中可能升级中国科技新闻网
  • 网站制作内容文案网站如何快速被百度收录
  • 淘宝淘宝网页版登录入口免费seo公司
  • 竹溪县县建设局网站短视频营销
  • 好的网站有哪些搜索引擎seo是什么意思
  • 做音乐网站赚钱吗做小程序的公司