关于nn.embedding的理解

article/2025/5/17 19:13:52
import torch.nn as nn
nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False)

参数解释

num_embeddings (python:int) – 词典的大小尺寸,比如总共出现5000个词,那就输入5000。此时index为(0-4999)

embedding_dim (python:int) – 嵌入向量的维度,即用多少维来表示一个符号。

padding_idx (python:int, optional) – 填充id,比如,输入长度为100,但是每次的句子长度并不一样,后面就需要用统一的数字填充,而这里就是指定这个数字,这样,网络在遇到填充id时,就不会计算其与其它符号的相关性。(初始化为0)

max_norm (python:float, optional) – 最大范数,如果嵌入向量的范数超过了这个界限,就要进行再归一化。

norm_type (python:float, optional) – 指定利用什么范数计算,并用于对比max_norm,默认为2范数。

scale_grad_by_freq (boolean, optional) – 根据单词在mini-batch中出现的频率,对梯度进行放缩。默认为False.

sparse (bool, optional) – 若为True,则与权重矩阵相关的梯度转变为稀疏张量。


在PyTorch中,针对词向量有一个专门的层nn.Embedding,用来实现词与词向量的映射。nn.Embedding具有一个权重(.weight),形状是(num_words, embedding_dim)。例如一共有10个词,每个词用2维向量表征,对应的权重就是一个10×2的矩阵。

Embedding的输入形状N×W,N是batch size,W是序列的长度,输出的形状是N×W×embedding_dim。
输入必须是LongTensor,FloatTensor需通过tensor.long()方法转成LongTensor。Embedding的权重是可以训练的,既可以采用随机初始化,也可以采用预训练好的词向量初始化。

给个例子

embedding = nn.Embedding(5, 3)  # 定义一个具有5个单词,维度为3的查询矩阵
print(embedding.weight)  # 展示该矩阵的具体内容
test = torch.LongTensor([[0, 2, 0, 1],[1, 3, 4, 4]])  # 该test矩阵用于被embed,其size为[2, 4]
print(test)
# 其中的第一行为[0, 2, 0, 1],表示获取查询矩阵中ID为0, 2, 0, 1的查询向量
# 可以在之后的test输出中与embed的输出进行比较
test = embedding(test)
print(test.size())  # 输出embed后test的size,为[2, 4, 3],增加的3,是因为查询向量的维度为3
print(test)  # 输出embed后的test的内容

结果
在这里插入图片描述


http://chatgpt.dhexx.cn/article/DpRsosDf.shtml

相关文章

深究embedding层

关于embedding层,贴出一些很好的链接,以供备忘与分享。 http://blog.sina.com.cn/s/blog_1450ac3c60102x79x.html https://blog.csdn.net/sjyttkl/article/details/80324656 https://blog.csdn.net/jiangpeng59/article/details/77533309 https://juejin…

一文搞懂 Embedding !

这篇文章把embedding单独提出来,梳理一下embedding在推荐系统中的应用。以下内容主要从深度学习方法和传统的协同过滤方法两个方面加深和理解在推荐系统领域对embedding的认识,详细解读下“embedding”这一重要思想。 什么是Embedding? Embedding(嵌入)是拓扑学里面的词…

5、Embedding

本文作为个人笔记引用于: https://blog.csdn.net/weixin_42078618/article/details/82999906 https://blog.csdn.net/weixin_42078618/article/details/84553940 https://www.jianshu.com/p/63e7acc5e890 简介 假设,我们中文,一共只有10个字…

embedding

what is emdding embedding就是把字词用向量表示出来,相当于是对字词做encoding motivation 比如 猫,狗,我们当然可以直接把他们表示为一些独立的离散符号,但是这样的表示毫无意义,而且会产生大量稀疏数据。使我们在…

Embeding编码方式

Embeding编码方式概述 独热码:数量大而且过于稀疏,映射之间是独立的,没有表现出关联性。 Embedding:是一种单词编码方法,用低维向量实现了编码,这种编码通过神经网络训练优化,能表达出单词间的…

机器学习中的Embedding

来自知乎的一个解释:(版权归原作者所有,仅供学习,禁止商用) https://zhuanlan.zhihu.com/p/46016518 解释还是有点感觉迷糊,数学解释: Embedding在数学上表示一个maping, f: X -> Y&#x…

Embedding 编码方法

一、作用 Embedding 是一种单词编码,用低维向量实现了编码,这种编码通过神经网络训练优化,能表达单词之间的相关性。 在是用独热码one_hot编码时,我们会发现单词的编码十分稀疏,以至于训练的效率不是很高。采用embeddi…

nn.Embedding使用

nn.Embedding是一种词嵌入的方式,跟one-hot相似但又不同,会生成低维稠密向量,但是初始是随机化的,需要根据模型训练时进行调节,若使用预训练词向量模型会比较好。 1. one-hot one-hot是给定每个单词一个索引&#xf…

深度学习中Embedding的解释

转载于https://zhuanlan.zhihu.com/p/164502624 什么是Embedding? 近年来,NLP自然语言处理、推荐系统,以及计算机视觉已成为目前工业界算法岗的主流方向,无论在哪个领域,对“Embedding”这个词概念的理解都是每个庞大知…

Embedding理解+代码

目录 Embedding主要思想 Word2vec主要思想两种模型:目的: 算法一、定义超参数二、将语料库转换one-hot编码表示三、模型训练 代码手动实现 skip-gram模型一、数据准备二、定义超参数三、定义word2vec模型数据清洗及生成词汇表训练模型 四、 获取词向量和…

Embedding 基础

一、什么是Embedding 简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法,这里说的对象可以是一个词、一个物品,也可以是一部电影等等。一个物品能被向量表示,是因为这个向量跟其他物品…

终于有人把Embedding讲明白了

导读:如果要总结深度学习大获成功的原因,那至少有两样东西必须入选:一样当然是很“深”的神经网络模型,这也是深度学习的“深度”的由来,另一样就是Embedding。 在深度学习中,Embedding是个很重要的概念&am…

计算机网络(二) | 网络编程基础、Socket套接字、UDP和TCP套接字编程

目录 一、网络编程基础1.1 为什么需要网络编程1.2 什么是网络编程1.3 网络编程中的基本概念 二、Socket套接字2.1 概念2.2 分类2.3 Java数据报套接字通信模型2.4 Java流套接字通信模型2.5 UDP数据包套接字编程2.6 TCP流套接字编程 一、网络编程基础 1.1 为什么需要网络编程 丰…

C#编程并实现网络UDP套接字

文章目录 一、UDP介绍二、C#命令行/控制台hello world程序(一)创建项目(二)客户端程序(三)服务端程序(四)使用wireshark抓包 三、C#Form窗口程序(一)创建项目…

Linux C语言高级

一、软件包管理及shell命令 1.流行的两种软件包管理机制 1.Deb软件包:由Debian Linux首先提出的软件包管理机制 2.RPM软件包:由Redhat Linux推出的软件包管理机制 2.Debian Linux开发了APT软件包管理器 1.检查和修复软件包依赖关系 2.利用Internet网络帮…

精心收集了60个C语言项目源码,分享给大家

C语言文章更新目录 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 VS2019编写简单…

python基于c语言开发_C高级编程:基于模块化设计思想的C语言开发 PDF 超清版

给大家带来的一篇关于C语言相关的电子书资源,介绍了关于C高级编程、模块化、设计思想、C语言开发方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小80 MB,吉星编写,目前豆瓣、亚马逊、当当、京东等…

【Linux】网络基础+UDP网络套接字编程

只做自己喜欢做的事情,不被社会和时代裹挟着前进,是一件很奢侈的事。 文章目录 一、 网络基础1.局域网和广域网2.协议初识和网络协议分层(TCP/IP四层模型)3.MAC地址和IP地址(子网掩码,路由表,I…

C#使用TCP/UDP协议通信并用Wireshark抓包分析数据

目录 一、Wireshark抓包软件下载安装二、控制台程序使用 UDP 通信1)创建新项目2)编写代码3)编译结果4)抓包分析数据 三、Form窗口程序使用 TCP 通信1)创建新项目2)设计图形界面3)编写代码4&…

SimpleFOC之ESP32(九)—— WIFI、UDP和TCP

目录 说明一、网络通信1.1、准备工作1.2、UDP通信1.3、TCP通信 二、硬件准备三、代码参考四、代码演示4.1、WIFI_AP模式UDP通信4.2、WIFI_STA模式TCP client通信 五、UDP通信控制电机5.1、硬件准备5.2、代码演示5.2.1、串口通信更改为UDP通信5.2.2、笔记本连接AP5.2.3、UDP发送…