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

transformer 基础知识

概要:简要记录 Encoder-Decoder 架构、seq2seq 模型、Attention 机制

Encoder & Decoder

encoder 接收输入,生成一个固定长度的上下文向量(编码器生成的最终隐藏状态);decoder 接收上下文向量(或状态)+输入,获得输出。

编码器-解码器架构

缺点:上下文长度固定,导致丢失信息。

代码实现

form torch import nnclass Encoder(nn.Module):"""编码器接口"""def __init__(self, **kwargs):super(Encoder, self).__init__(**kwargs)def forward(self, x, *args):raise NotImplementedErrorclass Decoder(nn.Module):"""解码器接口"""def __init__(self, **kwargs):super(Decoder, self).__init__(**kwargs)def init_state(self, enc_outputs, *args):raise NotImplementedErrordef forward(self, x, *args):raise NotImplementedErrorclass EncoderDecoder(nn.Module):"""编码器-解码器接口"""def __init__(self, encoder, decoder, **kwargs):super(EncoderDecoder, self).__init__(**kwargs)self.encoder = encoderself.decoder = decoderdef forward(self, enc_X, dec_X, *args):enc_outputs = self.encoder(enc_X, *args)dec_state = self.decoder.init_state(enc_outputs, *args)return self.decoder(dec_X, dec_state)

seq2seq

seq2seq 是一种使用 encoder-decoder 框架解决可变长度序列生成序列问题的模型。

在 seq2seq 模型提出前,解决序列生成序列问题,只能输入和输出均为固定长度的序列。如果输入和输出序列的长度不足,那么需要 padding + mask 来处理。

问题:

  1. seq2seq 模型提出前,输入输出序列要求为固定长度,意思是需要预处理输入序列长度为已定义的固定长度吗?
  2. seq2seq 模型可以处理可变长度序列,意思是输入序列可以是任意长度吗?如果 decoder 或 encoder 每个时间步只能处理序列中的一个单词,那么总时间步的步数需要预先定义吗?
  3. 为什么 seq2seq 存在短期记忆限制?seq2seq 里面的 rnn 模块只处理序列中的当前元素信息吗?也会有上一时间步的隐藏状态信息吧?但是没有更长时间前的信息了
  4. encoder 会输出一个最终隐藏状态,decoder 中每个 rnn 模块接收的隐藏状态都一样吗?还是说 decoder 中的每个 rnn 模块会在上一个的基础上增加一些信息?

训练和推理

训练过程:在 decoder 中,每个时间步都输入正确的单词

推理过程:在 decoder 中,每个时间步的输入使用上一时间步的预测输出

Attention 机制

不再要求 encoder 基于整个序列编码出一个固定长度的上下文向量,而是编码出一个上下文向量序列,解决信息丢失和短期记忆限制的问题。



参考:

动手学深度学习-李沐-9.6. 编码器-解码器架构

动手学深度学习-李沐-9.7. 序列到序列学习(seq2seq)

动手学深度学习-李沐-seq2seq-b站视频

fun transformer-Datawhale-引言

相关文章:

transformer 基础知识

概要:简要记录 Encoder-Decoder 架构、seq2seq 模型、Attention 机制 Encoder & Decoder encoder 接收输入,生成一个固定长度的上下文向量(编码器生成的最终隐藏状态);decoder 接收上下文向量(或状态…...

基于 STM32 的病房监控系统

标题:基于 STM32 的病房监控系统 内容:1.摘要 基于 STM32 的病房监控系统摘要:本系统采用 STM32 微控制器作为核心,通过传感器实时监测病房内的环境参数,如温度、湿度、光照等,并将数据上传至云端服务器。医护人员可以通过手机或…...

DeepSeek底层揭秘——知识图谱与语料库的联邦学习架构

目录 1. 知识图谱与语料库的联邦学习架构 2. 技术要素 3. 技术难点与挑战 4. 技术路径 5. 应用场景 6. 最新研究与技术进展 7. 未来趋势 8. 实际案例 猫哥说 1. 知识图谱与语料库的联邦学习架构 (1) 定义 “知识图谱与语料库的联邦学习架构”是一种结合知识图谱&…...

C++--iomanip库

目录 1. 设置字段宽度:std::setw() 2. 设置浮点数精度:std::setprecision() 3. 设置填充字符:std::setfill() 4. 控制对齐方式:std::left 和 std::right,std::internal 5. 控制进制输出:std::hex、std…...

机器学习(李宏毅)——self-Attention

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!! 二、大纲 何为self-Attention?原理剖析self-Attention VS CNN、RNN、GNN 三、何为self-Attenti…...

Android和DLT日志系统

1 Linux Android日志系统 1.1 内核logger机制 drivers/staging/android/logger.c static size_t logger_offset( struct logger_log *log, size_t n) { return n & (log->size - 1); } 写的off存在logger_log中(即内核内存buffer)&am…...

实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)

如上图,我的百度网盘已登录设备列表,有一个手机,2个windows客户端。手机设备有型号、最后登录时间、IP等。windows客户端信息有最后登录时间、操作系统类型、IP地址等。这些具体是如何实现的?下面分别给出android APP中采集手机信…...

DeepAR:一种用于时间序列预测的深度学习模型

介绍 DeepAR是一种基于递归神经网络(RNN)的时间序列预测模型,由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据,并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能,从而在实际应用中表…...

伺服报警的含义

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#的运动控制程序的时候,一个必要的步骤就是设置伺服报警信号的…...

Linux | 文件描述符

文章目录 Linux | 文件描述符1. 文件描述符概述2. 与文件描述符关联的数据结构2.1 进程级的文件描述符表(struct files_struct)2.2 文件描述符表项(struct fdtable)2.3 文件对象(struct file)2.4 索引节点&…...

蓝桥杯-洛谷刷题-day5(C++)(为未完成)

1.P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 i.题目 ii.代码 #include <iostream> #include <string> using namespace std;int N, Na, Nb; //0-"剪刀", 1-"石头", 2-"布", 3-"蜥", 4-"斯"&#xff1…...

LVS 负载均衡集群(NAT模式)

一、环境准备 四台主机&#xff08;一台 LVS、两台 RS、一台客户端&#xff09; 1.1.LVS 主机 LVS 主机&#xff08;两块网卡&#xff09; 第一块&#xff1a;NAT模式&#xff08;内网&#xff09; 第二块&#xff1a;添加网卡&#xff08;仅主机模式&#xff09;&#xff0…...

开源的轻量级分布式文件系统FastDFS

FastDFS 是一个开源的轻量级分布式文件系统&#xff0c;专为高性能的分布式文件存储设计&#xff0c;主要用于解决海量文件的存储、同步和访问问题。它特别适合以中小文件&#xff08;如图片、视频等&#xff09;为载体的在线服务&#xff0c;例如相册网站、视频网站等。 FastD…...

解决 DeepSeek 官网服务器繁忙的实用方案

解决 DeepSeek 官网服务器繁忙的实用方案 大家在使用 DeepSeek 时&#xff0c;是不是经常遇到官网服务器繁忙&#xff0c;等半天都加载不出来的情况&#xff1f;别担心&#xff0c;今天就给大家分享一个用 DeepSeek 硅基流动 Cherry Studio 解决这个问题的实用方案&#xff…...

Terraform 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案

1. 如何高效管理 Terraform 状态&#xff1f; 使用远程后端&#xff0c;如 S3 或 GCS&#xff0c;存储 Terraform 状态文件。这可以支持协作并确保团队工作时状态的一致性。使用 DynamoDB 或 GCS 锁定状态以防止同时修改状态。 示例&#xff1a; backend "s3" {bu…...

嵌入式八股文面试题(二)C语言算法

相关概念请查看文章&#xff1a;C语言概念。 1. 如何实现一个简单的内存池&#xff1f; 简单实现&#xff1a; #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…...

#渗透测试#批量漏洞挖掘#LiveBos UploadFile 任意文件上传漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 漏洞背景 漏洞成因 影响评估 检测方案 …...

ds-download-link 插件:以独特图标选择,打造文章下载链接

源码介绍 “ds-download-link”插件为 WordPress 网站提供了在文章编辑器中添加下载链接的功能&#xff0c;每个下载链接都支持图标选择&#xff0c;并能将这些链接以美观的样式展示在文章前端页面。以下是该插件的主要特性和功能&#xff1a; 后台功能 在文章编辑器下方添加…...

介绍下SpringBoot在分布式架构中,如何实现读写分离

在分布式架构中&#xff0c;Spring Boot 可以通过多种方式实现读写分离&#xff0c;以提升系统性能和扩展性。以下是常见的实现方法&#xff1a; 1. 使用多数据源 通过配置多个数据源&#xff0c;将读操作和写操作分别路由到不同的数据库实例。 实现步骤&#xff1a; 配置多…...

判断函数是否为react组件或lazy包裹的组件

function Modal(){return <p>123</p> } 实参里填入函数名,是false 实参里填入标签形式的函数,是true isValidElement(Modal)//false isValidElement(<Modal></Modal>)//true 官方说明 isValidElement – React 中文文档 但是官方并不建议用isValidE…...

【大数据安全分析】大数据安全分析技术框架与关键技术

在数字化时代,网络安全面临着前所未有的挑战。传统的网络安全防护模式呈现出烟囱式的特点,各个安全防护措施和数据相互孤立,形成了防护孤岛和数据孤岛,难以有效应对日益复杂多变的安全威胁。而大数据分析技术的出现,为解决这些问题带来了新的曙光。 大数据分析在网络安全…...

PHP 中的除以零错误

除以零错误&#xff08;Division by zero&#xff09;是指数字除以零的情况&#xff0c; 这在数学上是未定义的。在 PHP 中&#xff0c;处理这种错误的方式取决于 PHP 版本&#xff1a; PHP 7&#xff1a; 使用 / 运算符会产生一个警告 (E_WARNING) 并返回 false。 使用 intd…...

【QT】控件 -- 多元素类 | 容器类 | 布局类

&#x1f525; 目录 一、多元素类1. List Widget -- 列表2. Table Widget -- 表格3. Tree Widget -- 树形 二、容器类1. Group Box -- 分组框2. Tab Widget -- 标签页 三、布局类1. 垂直布局【使用 QVBoxLayout 管理多个控件】【创建两个 QVBoxLayout】 2. 水平布局【使用 QHBo…...

数据结构——【二叉树模版】

#思路 1、二叉树不同于数的构建&#xff0c;在树节点类中&#xff0c;有数据&#xff0c;左子结点&#xff0c;右子节点三个属性&#xff0c;在树类的构造函数中&#xff0c;添加了变量maxNodes&#xff0c;用于后续列表索引的判断 2.GetTreeNode()函数是常用方法&#xff0c;…...

centos7 curl#6 - Could not resolve host mirrorlist.centos.org; 未知的错误 解决方案

问题描述 centos7系统安装完成后&#xff0c;yum安装软件时报错“curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”” [root192 ~]# yum install vim -y 已加载插件&#xff1a;fastestmirror Determining fastest mirrors Could not retrieve mirro…...

【前端发展路径】技术成长路径、职业方向分支、行业趋势与建议、学习资源推荐

前端开发是一个快速发展的领域,技术栈和职业路径也在不断演进。以下是前端开发的典型发展路径,分为技术成长和职业方向两个维度,供参考: 一、技术成长路径 1. 初级阶段(入门) 核心技能: HTML/CSS:语义化标签、布局(Flex/Grid)、响应式设计、CSS 预处理器(Sass/Less…...

NO.15十六届蓝桥杯备战|while循环|六道练习(C++)

while循环 while语法形式 while 语句的语法结构和 if 语句⾮常相似&#xff0c;但不同的是 while 是⽤来实现循环的&#xff0c; if 是⽆法实现循环的。 下⾯是 while 循环的语法形式&#xff1a; //形式1 while ( 表达式 )语句; //形式2 //如果循环体想包含更多的语句&a…...

kotlin标准库里面也有很多java类

Kotlin 标准库中确实存在许多与 Java 类直接关联或基于 Java 类封装的结构&#xff0c;但这并不是“问题”&#xff0c;而是 Kotlin 与 JVM 生态深度兼容和互操作性的体现。以下从技术原理和设计哲学的角度详细解释&#xff1a; 一、Kotlin 与 JVM 的底层关系 Kotlin 代码最终…...

Flutter 双屏双引擎通信插件加入 GitCode:解锁双屏开发新潜能

在双屏设备应用场景日益丰富的当下&#xff0c;移动应用开发领域迎来了新的机遇与挑战。如何高效利用双屏设备优势&#xff0c;为用户打造更优质的交互体验&#xff0c;成为开发者们关注的焦点。近日&#xff0c;一款名为 Flutter 双屏双引擎通信插件的创新项目正式入驻 GitCod…...

01、单片机上电后没有正常运行怎么办

单片机上电后没有运转, 首先要检查什么? 1、单片机供电是否正常? &电路焊接检查 如果连最基本的供电都没有,其它都是空谈啊!检查电路断路了没有?短路了没有?电源合适吗?有没有虚焊? 拿起万用表之前,预想一下测量哪里?供电电压应该是多少?对PCB上电压测量点要…...