首页 > 其他分享 >nn.Embedding 的理解

nn.Embedding 的理解

时间:2022-11-11 23:56:42浏览次数:49  
标签:Embedding nn -- 理解 embedding input size

Embedding是将输入向量化,参数包括:

nn.Embedding(vocab_size, emb_size)
vocab_size:词典大小(不是每个batch size的长度,而是数据集词库的大小)

emb_size:每个词需要嵌入多少维来表示(也就是输入维度)

构造一个(假装)vocab size=10,每个vocab用3-d向量表示的table
>>> embedding = nn.Embedding(10, 3)
>>> embedding.weight
Parameter containing:
tensor([[ 1.2402, -1.0914, -0.5382],
[-1.1031, -1.2430, -0.2571],
[ 1.6682, -0.8926, 1.4263],
[ 0.8971, 1.4592, 0.6712],
[-1.1625, -0.1598, 0.4034],
[-0.2902, -0.0323, -2.2259],
[ 0.8332, -0.2452, -1.1508],
[ 0.3786, 1.7752, -0.0591],
[-1.8527, -2.5141, -0.4990],
[-0.6188, 0.5902, -0.0860]], requires_grad=True)

 

根据定义的table对输入两个句子每个句子由四个词进行嵌入:

input = torch.LongTensor([[1,2,4,5],[4,3,2,9]])

>>> a = embedding(input)
>>> a
tensor([[[-1.1031, -1.2430, -0.2571],
[ 1.6682, -0.8926, 1.4263],
[-1.1625, -0.1598, 0.4034],
[-0.2902, -0.0323, -2.2259]],
[[-1.1625, -0.1598, 0.4034],
[ 0.8971, 1.4592, 0.6712],
[ 1.6682, -0.8926, 1.4263],
[-0.6188, 0.5902, -0.0860]]], grad_fn=<EmbeddingBackward>)

  

可以观察到每一行是一个词的向量表示,且输入input是indices,即词对应的标签(比如:“我”--“1”,“音”--“2”,“识”--“3”,别--“4”)

在通过nn.Embedding 初始化他的权重时已经为每一个输入标签构建好了对应的词向量,比如a = embedding(input)中的第一行对应的标签是“1”,所以在生成的embedding.weight取出下标为1的向量表示该标签。

标签:Embedding,nn,--,理解,embedding,input,size
From: https://www.cnblogs.com/Uriel-w/p/16882467.html

相关文章

  • python apscheculer 报错 skipped: maximum number of running instances reached (1
    apscheduler定时任务报错skipped:maximumnumberofrunninginstancesreached(1)原因是默认max_instances最大定时任务是1个,可以通过在add_job中调max_instances增加......
  • 谈谈你对IOC的理解
    IOC:控制反转。控制:对象的创建的控制权限;反转:将对象的控制权限交给spring。之前我们创建对象时用new,现在直接从spring容器中取,维护对象之间的依赖关系,降低对象之间的耦合度......
  • Java静态代理设计模式模式(多线程Runnable)
    静态代理设计模式,就是代理对象来帮你忙前忙后,你负责出席一下就好了。需要:1.实现相同的接口2.真实角色3.代理角色,里面有一个成员是接口对象(实际上是真实角色----接口实......
  • 快速掌握kafka原理解析
    ​简介​Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数......
  • memcached全面剖析-2.理解memcache…
    下面是《memcached全面剖析》的第二部分。发表日:2008/7/9作者:前坂?(ToruMaesaka)SlabAllocation机制:整理内存以便重复使用SlabAllocation的主要术语在Slab中缓存......
  • iTunes Connect在线创建 App
    创建完成环境文件后,在iTunesConnect上创建APP首先,进入(https://developer.apple.com/membercenter/index.action)选择iTunesConnect编辑切换为居中添加图片注释,......
  • cannot undefine domain with nvram
    参考:https://blog.csdn.net/tiantao2012/article/details/105440599通过virsh 删除虚拟机时报错,提示cannotundefinedomainwithnvram,解决方法是加上--nvram分析如......
  • Android - 使用SpannableString设置复合文本
    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能:1、Backg......
  • 关于架构设计的易变性,应该如何理解呢?
    hello,大家好,我是张张,「架构精进之路」公号作者。一、架构设计分层通常情况下,我们的架构设计图大概率会如下图这个样子了,首先声明一点,这其实并没有什么不妥的,这也是很典型的......
  • Android错误之--activity_main cannot be resolved or is not a field
    一般在copy别人的项目中会容易出现本错误,截图如下:出现本错误的一般有两种情况第一种情况:导包错误--检查import,找到这个:删除之,再重新导入含有包名的R文件。第二种情况:本情况......