transformer 中编码器原理和部分实现
编码器部分实现
目标
- 了解编码器中各个组成部分的作用
- 掌握编码器中各个组成部分的实现过程
编码器部分
- 由N个编码器堆叠组成
- 每个编码器由两个子层连接结构组成
- 第一个子连接结构包括一个多头注意力子层和规范化层以及一个残差连接
- 第二个子层连接结构包括一个前馈全链接子层和规范化层以及一个残差连接
掩码张量
目标
- 了解什么是掩码张量以及它的作用
- 掌握生成掩码张量的实现过程
什么是掩码张量?
掩代表着烟, 码就是我们张量中的数值, 他的尺寸不定, 里面一半只有1和0个元素, 代表位置被遮掩或者不被遮掩, 至于是0位置被遮掩还是1位置被遮掩可以自定义
因此它的主要作用就是让另一个张量中的一些数值被遮掩, 也可以说是被替换, 它的表现形式是一个张量
掩码张量的作用
在transformer中, 掩码张量的主要作用在应用attention时, 有一些生成的attention张量中的值计算有可能已知了未来信息而得到的, 未来信息被看到是因为训练时会把整个输出结果都一次性进行Embedding,
但是理论上解码器的输出却不是一次性就能产生最终结果的, 而是一次次通过上次结果综合得出的, 因此, 未来的信息可能被提前利用, 所以, 我们会进行遮掩
代码分析
import numpy as np
import torch
import matplotlib.pyplot as pltdef subsequent_mask(size):"""生成向后遮掩的掩码张量, 参数size是掩码张量最后两个维度的大小, 它的最后两维形成一个方阵"""# 在函数中, 首先定义掩码张量的形状attn_shape = (1, size, size)# 然后使用 np.ones 方法向这个形状中添加 1 元素, 形成三角阵# 最后为了节约空间, 再使其中的数据类型变为无符号的8位整形uint8mask = np.triu(np.ones(attn_shape), k=1).astype("uint8")# 最后将 numpy 类型转化为 torch 的 tensor, 内部做一个 1- 的操作# 在这个其实是做了一个三角阵的反转, mask 中每个元素都会被 1-# 如果是0, 位置由 0 变为1, 如果为1, 位置由 1 变为0return torch.from_numpy(1 - mask)if __name__ == '__main__':mask = subsequent_mask(20)"""output:tensor([[[1, 0, 0, 0, 0],[1, 1, 0, 0, 0],[1, 1, 1, 0, 0],[1, 1, 1, 1, 0],[1, 1, 1, 1, 1]]], dtype=torch.uint8)"""
掩码张量可视化
import matplotlib.pyplot as pltmask = subsequent_mask(20)
plt.figure(figsize=(5, 5))
plt.imshow(mask[0])
plt.show()
!()[]
- 黄色是代表1的部分, 代表被掩的部分, 紫色代表没有被遮掩的信息, 横坐标代表目标词汇的位置, 纵坐标代表可看到的位置
- 0 的位置都是被遮住了, 说明第一次词还没有产出, 第二个位置看过去到1的词, 说明第一个词开始产出, 其他位置看不到, 以此类推
np.triu说明
np.triu 函数用于返回一个三角形矩阵, 默认下三角为 0, 上三角为 1, 可以通过参数 k 来控制上三角和下三角的位置。
import numpy as np# 保留主对角线下一行和右行
s = np.triu([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], k=-1)
print(s)# 保留主对角线和右行
s = np.triu([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], k=0)
print(s)# 保留主对角线右行
s = np.triu([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], k=1)
print(s)"""output:
[[ 1 2 3][ 4 5 6][ 0 8 9][ 0 0 12]][[1 2 3][0 5 6][0 0 9][0 0 0]][[0 2 3][0 0 6][0 0 0][0 0 0]]"""
相关文章:
transformer 中编码器原理和部分实现
编码器部分实现 目标 了解编码器中各个组成部分的作用掌握编码器中各个组成部分的实现过程 编码器部分 由N个编码器堆叠组成每个编码器由两个子层连接结构组成第一个子连接结构包括一个多头注意力子层和规范化层以及一个残差连接第二个子层连接结构包括一个前馈全链接子层和…...
MySQL多表查询实战指南:从SQL到XML映射的完整实现(2W+字深度解析)
MySQL多表查询实战指南:从SQL到XML映射的完整实现(2W+字深度解析) 第一章 多表查询基础与核心原理 1.1 关系型数据库设计范式 以电商系统为例的三范式实践: -- 原始数据表(违反第三范式) CREATE TABLE orders (order_id INT PRIMARY KEY,customer_name VARCHAR(50),p…...
蓝桥杯--寻找整数
题解 public static void main(String[] args) {int[] mod {0, 0, 1, 2, 1, 4, 5, 4, 1, 2, 9, 0, 5, 10, 11, 14, 9, 0, 11, 18, 9, 11, 11, 15, 17, 9, 23, 20, 25, 16, 29, 27, 25, 11, 17, 4, 29, 22, 37, 23, 9, 1, 11, 11, 33, 29, 15, 5, 41, 46};long t lcm(2, 3);lo…...
Kafka 中,为什么同一个分区只能由消费者组中的一个消费者消费?
在 Kafka 中,同一个分区只能由消费者组中的一个消费者消费,这是 Kafka 的设计决策之一,目的是保证消息的顺序性和避免重复消费。这背后有几个关键的原因: 1. 保证消息顺序性 Kafka 中的每个 分区(Partitionÿ…...
自然语言处理入门6——RNN生成文本
一、文本生成 我们在前面的文章中介绍了LSTM,根据输入时序数据可以输出下一个可能性最高的数据,如果应用在文字上,就是根据输入的文字,可以预测下一个可能性最高的文字。利用这个特点,我们可以用LSTM来生成文本。输入…...
$R^n$超平面约束下的向量列
原向量: x → \overset{\rightarrow}{x} x→ 与 x → \overset{\rightarrow}{x} x→法向相同的法向量(与 x → \overset{\rightarrow}{x} x→同向) ( x → ⋅ n → ∣ n → ∣ 2 ) n → (\frac{\overset{\rightarrow}x\cdot\overset{\righta…...
FPGA_DDR错误总结
1otp 31-67 解决 端口没连接 必须赋值; 2.PLACE 30-58 TERM PLINITCALIBZ这里有问题 在顶层输出但是没有管脚约束报错 3.ERROR: [Place 30-675] 这是时钟不匹配IBUF不在同一个时钟域,时钟不在同一个时钟域里,推荐的不建议修改 问题 原本…...
k8s之Service类型详解
1.ClusterIP 类型 2.NodePort 类型 3.LoadBalancer 类型 4.ExternalName 类型 类型为 ExternalName 的 Service 将 Service 映射到 DNS 名称,而不是典型的选择算符, 例如 my-service 或者 cassandra。你可以使用 spec.externalName 参数指定这些服务…...
NOIP2011提高组.玛雅游戏
目录 题目算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化思路*详细注释版代码精简注释版代码 题目 185. 玛雅游戏 算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化 思路 可行性剪枝 如果某个颜色的格子数量少于 3 3 3一定无解因为要求字典序最小, 因此当一个格子左边有…...
网络安全应急响应之文件痕迹排查:从犯罪现场到数字狩猎的进化论
凌晨3点,某金融企业的服务器突然告警,核心数据库出现未知进程访问。安全团队紧急介入时,攻击者已抹去日志痕迹。在这场与黑客的时间赛跑中,文件痕迹排查成为破局关键。本文将带您深入数字取证的"案发现场",揭…...
移动端六大语言速记:第11部分 - 内存管理
移动端六大语言速记:第11部分 - 内存管理 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在内存管理方面的特性,帮助开发者理解和掌握各语言的内存管理机制。 11. 内存管理 11.1 垃圾回收机制对比 各语言垃圾回收机制的主要特点对比:…...
基于ssm框架的校园代购服务订单管理系统【附源码】
1、系统框架 1.1、项目所用到技术: javaee项目 Spring,springMVC,mybatis,mvc,vue,maven项目。 1.2、项目用到的环境: 数据库 :mysql5.X、mysql8.X都可以jdk1.8tomcat8 及以上开发…...
lib-zo,C语言另一个协程库,函数列表
lib-zo,C语言另一个协程库,函数列表 支持开启/禁用指定fd是否开启协程切换 /* 主动设置fd支持协程切换 */ void zcoroutine_enable_fd(int fd);/* 主动设置fd不支持协程切换 */ void zcoroutine_disable_fd(int fd);函数列表 #pragma once#ifndef ___ZC_LIB_INCLUDE_COROUTI…...
【10】数据结构的矩阵与广义表篇章
目录标题 二维以上矩阵矩阵存储方式行序优先存储列序优先存储 特殊矩阵对称矩阵稀疏矩阵三元组方式存储稀疏矩阵的实现三元组初始化稀疏矩阵的初始化稀疏矩阵的创建展示当前稀疏矩阵稀疏矩阵的转置 三元组稀疏矩阵的调试与总代码十字链表方式存储稀疏矩阵的实现十字链表数据标签…...
本地项目HTTPS访问问题解决方案
本地项目无法通过 HTTPS 访问的原因通常是默认配置未启用 HTTPS 或缺少有效的 SSL 证书。以下是详细解释和解决方案: 原因分析 默认开发服务器仅支持 HTTP 大多数本地开发工具(如 Vite、Webpack、React 等)默认启动的是 HTTP 服务器ÿ…...
猜猜乐游戏(python)
import randomprint(**30) print(欢迎进入娱乐城) print(**30)username input(输入用户名:) cs 0answer input( 是否加入"猜猜乐"游戏(yes/no)? )if answer yes:while True:num int(input(%s! 当前你的金币数为%d! 请充值(100¥30币&…...
spring boot 2.7 集成 Swagger 3.0 API文档工具
背景 Swagger 3.0 是 OpenAPI 规范体系下的重要版本,其前身是 Swagger 2.0。在 Swagger 2.0 之后,该规范正式更名为 OpenAPI 规范,并基于新的版本体系进行迭代,因此 Swagger 3.0 实际对应 OpenAPI 3.0 版本。这一版本着重强化了对…...
Dinky 和 Flink CDC 在实时整库同步的探索之路
摘要:本文整理自 Dinky 社区负责人,Apache Flink CDC contributor 亓文凯老师在 Flink Forward Asia 2024 数据集成(二)专场中的分享。主要讲述 Dinky 的整库同步技术方案演变至 Flink CDC Yaml 作业的探索历程,并深入…...
视频融合平台EasyCVR搭建智慧粮仓系统:为粮仓管理赋能新优势
一、项目背景 当前粮仓管理大多仍处于原始人力监管或初步信息化监管阶段。部分地区虽采用了简单的传感监测设备,仍需大量人力的配合,这不仅难以全面监控粮仓复杂的环境,还容易出现管理 “盲区”,无法实现精细化的管理。而一套先进…...
3D Gaussian Splatting as MCMC 与gsplat中的应用实现
3D高斯泼溅(3D Gaussian splatting)自2023年提出以后,相关研究paper井喷式增长,尽管出现了许多改进版本,但依旧面临着诸多挑战,例如实现照片级真实感、应对高存储需求,而 “悬浮的高斯核” 问题就是其中之一。浮动高斯核通常由输入图像中的曝光或颜色不一致引发,也可能…...
C++初阶-C++的讲解1
目录 1.缺省(sheng)参数 2.函数重载 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 3.5.指针和引用的关系 4.nullptr 5.总结 1.缺省(sheng)参数 (1)缺省参数是声明或定义是为函数的参数指定一个缺省值。在调用该函数是…...
STM32_USB
概述 本文是使用HAL库的USB驱动 因为官方cubeMX生成的hal库做组合设备时过于繁琐 所以这里使用某大神的插件,可以集成在cubeMX里自动生成组合设备 有小bug会覆盖生成文件里自己写的内容,所以生成一次后注意保存 插件安装 下载地址 https://github.com/alambe94/I-CUBE-USBD-Com…...
STM32 的编程方式总结
🧱 按照“是否可独立工作”来分: 库/方式是否可独立使用是否依赖其他库说明寄存器裸写✅ 是❌ 无完全自主控制,无库依赖标准库(StdPeriph)✅ 是❌ 只依赖 CMSIS自成体系(F1专属),只…...
MFC工具栏CToolBar从专家到小白
CToolBar m_wndTool; //创建控件 m_wndTool.CreateEx(this, TBSTYLE_FLAT|TBSTYLE_NOPREFIX, WS_CHILD | WS_VISIBLE | CBRS_FLYBY | CBRS_TOP | CBRS_SIZE_DYNAMIC); //加载工具栏资源 m_wndTool.LoadToolBar(IDR_TOOL_LOAD) //在.rc中定义:IDR_TOOL_LOAD BITMAP …...
vllm作为服务启动,无需额外编写sh文件,一步到位【Ubuntu】
看到网上有的vllm写法,需要额外建立一个.sh文件,还是不够简捷。这里提供一种直接编写service文件一步到位的写法: vi /etc/systemd/system/vllm.service [Unit] DescriptionvLLM Service Afternetwork.target[Service] Typesimple Userroot…...
大厂机考——各算法与数据结构详解
目录及其索引 哈希双指针滑动窗口子串普通数组矩阵链表二叉树图论回溯二分查找栈堆贪心算法动态规划多维动态规划学科领域与联系总结 哈希 学科领域:计算机科学、密码学、数据结构 定义:通过哈希函数将任意长度的输入映射为固定长度…...
hive中的特殊字符
1、UTF-8 编码的非断空格(对应 Unicode 码点为 \u00A0) 这种空格在网页中常见(HTML 中的 ),用于阻止文本在换行时被分割。由于它不是标准空格(ASCII 20),使用TRIM 函数无法直接…...
10:00开始面试,10:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
基于ueditor编辑器的功能开发之给编辑器图片增加水印功能
用户需求,双击编辑器中的图片的时候,出现弹框,用户可以选择水印缩放倍数、距离以及水印所放置的方位(当然有很多水印插件,位置大小透明度用户都能够自定义,但是用户需求如此,就自己写了…...
fabric test-network启动
//按照这个来放,免得出错 mkdir -p $GOPATH/src/github.com/hyperledger cd $GOPATH/src/github.com/hyperledger # 获取fabric-samples源码 git clone https://github.com/hyperledger/fabric-samples.git export FABRIC_LOGGING_SPECdebug cd fabric-samples # …...
