[随笔] nn.Embedding的前向传播与反向传播

nn.Embedding的前向传播与反向传播

nn.Embedding的前向计算过程

embedding module 的前向过程其实是一个索引(查表)的过程
表的形式是一个 matrix(embedding.weight, learnable parameters)

matrix.shape: (v, h)
v:vocabulary size=num_embedding
h:hidden dimension=embedding_dim

仅从数学的角度来说(方便推导模型),具体索引的过程,可以通过 one hot + 矩阵乘法的形式实现的

input.shape: (b, s)
> b:batch size
> s:seq len当执行下行代码时,会进行如下计算 embed = embedding(input) > input.shape(b,s) 	e.g [[0, 2, 2,1]]
> 最终的维度变化情况:(b, s) ==> (b, s, h)1.(b, s) 经过 one hot => (b, s, v)
inputs: [[0, 2, 2, 1 , 1]] 
inputs One-Hot: 数值分类(0-4 => 五分类) 0:[1,0,0,0,0][[[1,0,0,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,1,0,0,0],[0,1,0,0,0]]]
matrix(embedding.weight):[[ 1.0934,  1.7521, -1.9529, -1.0145,  0.5770],[-0.4371, -0.4270, -0.4908, -0.3988,  0.9695],[ 0.0000,  0.0000,  0.0000,  0.0000,  0.0000],[ 0.7268, -0.4491, -0.8089,  0.7516,  1.2716],[ 0.7785, -0.4336, -0.7542, -0.1953,  0.9711]]

2.(b, s, v) @ (v, h) ==> (b, s, h)

x(b, s, h):[[[ 1.0934,  1.7521, -1.9529, -1.0145,  0.5770],[ 0.0000,  0.0000,  0.0000,  0.0000,  0.0000],[ 0.0000,  0.0000,  0.0000,  0.0000,  0.0000],[-0.4371, -0.4270, -0.4908, -0.3988,  0.9695],[-0.4371, -0.4270, -0.4908, -0.3988,  0.9695]]]

本质上,embedding(input) 是一个内存寻址的过程:

假设 inputs 是一个包含词索引的张量,i是数值化文本 inputs上的Token,weight 是嵌入矩阵。对于每个索引 i,嵌入向量 v_i 对应的计算过程是:v_i=embedding.weight[i]
nn.Embedding的反向传播过程

只有前向传播中用到的索引会接收梯度。

假如反向传播过来的梯度是 [0.1,0.1,0.3] ,原始的embedding矩阵= [[1. ,1. ,1.],[1. ,1. ,1.]] , lr=0.1

那么 反向传播以后embedding的参数就为 [[1. ,1. ,1.],[1. ,1. ,1.]] - 1 * [[0.1,0.1,0.3],[0.,0.,0.]]

即 [[0.99. ,0.99 ,0.97],[1. ,1. ,1.]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建实时、融合的湖仓一体数据分析平台:基于 Delta Lake 与 Apache Iceberg

1. 执行摘要 挑战: 传统数据仓库在处理现代数据需求时面临诸多限制,包括高昂的存储和计算成本、处理海量多样化数据的能力不足、以及数据从产生到可供分析的端到端延迟过高。同时,虽然数据湖提供了低成本、灵活的存储,但往往缺乏…

Maven error:Could not transfer artifact

问题描述 当项目从私有仓库下载依赖时,Maven 报错,无法从远程仓库下载指定的依赖包,错误信息如下: Could not transfer artifact com.ding.abcd:zabk-java:pom from/to releases (http://192.1122.101/repory/mavenleases/): 此…

Dify 生成提示词的 Prompt

Dify 生成提示词的 Prompt **第1次提示词****第2次提示词****第3次提示词**总结 Dify 生成提示词是,会和LLM进行3次交互,下面是和LLM进行交互是的Prompt。 以下是每次提示词的概要、目标总结以及原始Prompt: 第1次提示词 概要: …

sqli-labs靶场 less4

文章目录 sqli-labs靶场less 4 联合注入 sqli-labs靶场 每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。 sql注入的基本步骤 注入点注入类型 字符型:判断闭合方式 (‘、"、’、“”&#xf…

【什么是动态链接?这里的动态是什么意思?链接了什么?】

动态链接(Dynamic Linking)详解 1. 什么是动态链接? 动态链接是 Java 虚拟机(JVM)在运行时将字节码中的符号引用(Symbolic Reference)转换为直接引用(Direct Reference)…

AWS S3深度剖析:云存储的瑞士军刀

1. 引言 在当今数据驱动的世界中,高效、可靠、安全的数据存储解决方案至关重要。Amazon Simple Storage Service (S3)作为AWS生态系统中的核心服务之一,为企业和开发者提供了一个强大而灵活的对象存储平台。本文将全面解析S3的核心特性,帮助读者深入理解如何充分利用这一&q…

【Game】Powerful——Martial Arts Challenge(6)

文章目录 攻略关卡一(虎子)关卡二关卡三关卡四关卡五关卡六——奇穷 攻略 关卡一(虎子) 参战选手 出手顺序 关卡二 参战选手 出手顺序 关卡三 参战选手 出手顺序 关卡四 参战选手 出手顺序 关卡五 参战选手 出手顺序 关卡六…

PPIO × UI-TARS:用自然语言操控电脑,AI Agent 的极致体验

Manus的爆火预示着AI 正在从单纯的文本生成和图像识别迈向更复杂的交互场景。字节跳动近期推出的开源项目 UI-TARS Desktop 为我们展示了一种全新的可能性:能够通过自然语言理解和处理来控制计算机界面。这款工具代表了人工智能与人机交互领域的重大突破&#xff0c…

电脑屏保壁纸怎么设置 桌面壁纸设置方法详解

电脑桌面壁纸作为我们每天面对的第一视觉元素,不仅能够彰显个人品味,还能营造舒适的工作或娱乐氛围。电脑桌面壁纸怎么设置呢?下面本文将为大家介绍Windows和macOS两大主流操作系统中设置电脑桌面壁纸的方法,帮助大家快速设置个性…

popupwindow拦截返回点击

目的:弹窗只有点击按钮可以关闭。 前提:弹窗内有输入框 试了网上的一些方法 设置弹窗焦点 setFocusable(false) (会导致软键盘无法显示)重写 onBackPressed 方法 (不会走这里)为 popupwindow 设置 onKey…

数学知识——矩阵乘法

使用矩阵快速幂优化递推问题 对于一个递推问题,如递推式的每一项系数都为常数,我们可以使用矩阵快速幂来对算法进行优化。 一般形式为: F n F 1 A n − 1 F_nF_1A^{n-1} Fn​F1​An−1 由于递推式的每一项系数都为常数,因此对…

GitHub 趋势日报 (2025年04月07日)

GitHub 趋势日报 (2025年04月07日) 本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星语言1microsoft/markitdownPython tool for converting files and office documents to Markdown.⭐ 1039P…

ROS多设备交互

ROS多设备连接同一个Master:ROS Master多设备连接-CSDN博客 在多个PC端连接同一个ROS Master后,接下来就可以实现不同设备之间的话题交流,Master主机端启动不同PC端的功能包等功能了 尽管多个PC端拥有不同的ROS工作空间,但是只要…

基于国内环境 在Ubuntu 上安装 Docker 指南

前言 在容器化技术主导云原生时代的今天,Docker 凭借其轻量化、高移植性和秒级部署能力,已成为开发与运维的必备工具。然而,国内用户在 Ubuntu 系统上安装 Docker 时,常因 ​官方镜像源访问受限、网络延迟高、依赖包安装失败 等问…

数据结构:二叉树(三)·(重点)

二叉树的存储结构 ⼆叉树⼀般可以使⽤两种结构存储,⼀种顺序结构,⼀种链式结构。 顺序结构 顺序结构存储就是使⽤数组来存储,⼀般使⽤数组只适合表⽰完全⼆叉树,因为不是完全⼆叉树会有 空间的浪费,完全⼆叉树更适合…

EasyExcel实现图片导出功能(记录)

背景:在旧系统的基础上,导出一些工单信息时,现需要新添加处理人的签名或者签章,这就涉及图片的上传、下载、写入等几个操作。 1、EasyExcel工具类 (1)支持下拉框的导出。 import com.alibaba.excel.Easy…

Android Material Design 3 主题配色终极指南:XML 与 Compose 全解析

最小必要颜色配置 <!-- res/values/themes.xml --> <style name"Theme.MyApp" parent"Theme.Material3.DayNight"><!-- 基础三原色 --><item name"colorPrimary">color/purple_500</item><item name"col…

【Git】“warning: LF will be replaced by CRLF”的解决办法

一、原因分析 不同操作系统的换行符标准不同&#xff1a; • Windows&#xff1a;使用 CRLF&#xff08;\r\n&#xff09;表示换行&#xff1b; • Linux/Mac&#xff1a;使用 LF&#xff08;\n&#xff09;表示换行 Git 检测到本地文件的换行符与仓库设置或目标平台不兼容时…

PyTorch 深度学习实战(33):联邦学习与隐私保护

在上一篇文章中,我们探讨了多模态学习与CLIP模型的应用。本文将深入介绍联邦学习(Federated Learning)这一新兴的分布式机器学习范式,它能够在保护数据隐私的前提下实现多方协作的模型训练。我们将使用PyTorch实现一个基础的联邦学习框架,并在图像分类任务上进行验证。 一…

蓝桥杯 web 展开你的扇子(css3)

普通答案&#xff1a; #box:hover #item1{transform: rotate(-60deg); } #box:hover #item2{transform: rotate(-50deg); } #box:hover #item3{transform: rotate(-40deg); } #box:hover #item4{transform: rotate(-30deg); } #box:hover #item5{transform: rotate(-20deg); }…