pytorch中的gather函数_Pytorch中Emdedding函数的解释及使用方法
函数:torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None)
函数大概解释:相当于随机生成了一个tensor,可以把它看作一个查询表,其size为[embeddings_num,embeddingsdim] 。其中nembeddings_num是查询表的大小,embedding_dim是每个查询向量的维度,这里看起来很抽象,可以看下面的示例来进行理解。
参数解释:
- embeddings_nums:查询表的大小
- embeddings_dim:每个查询向量的维度
- 其它参数其实很少用到,如果想了解,可以查看其他大佬的解释
具体实例:
实例一:创建查询矩阵并使用它做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]
# 其中的第一行为[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的内容——————————————————————————————————————
输出:
Parameter containing:
tensor([[-1.8056, 0.1836, -1.4376],[ 0.8409, 0.1034, -1.3735],[-1.3317, 0.8350, -1.7235],[ 1.5251, -0.2363, -0.6729],[ 0.4148, -0.0923, 0.2459]], requires_grad=True)
torch.Size([2, 4, 3])
tensor([[[-1.8056, 0.1836, -1.4376],[-1.3317, 0.8350, -1.7235],[-1.8056, 0.1836, -1.4376],[ 0.8409, 0.1034, -1.3735]],[[ 0.8409, 0.1034, -1.3735],[ 1.5251, -0.2363, -0.6729],[ 0.4148, -0.0923, 0.2459],[ 0.4148, -0.0923, 0.2459]]], grad_fn=<EmbeddingBackward>)
可以看出创建了一个具有5个ID(可以理解为拥有5个词的词典)的查询矩阵,每个查询向量的维度是3维,然后用一个自己需要Embedding的矩阵与之计算,其中的内容就是需要匹配的ID号,注意!如果需要Embedding的矩阵中的查询向量不为1,2这种整数,而是1.1这种浮点数,就不能与查询向量成功匹配,会报错,且如果矩阵中的值大于了查询矩阵的范围,比如这里是5,也会报错。
实例二:寻找查询矩阵中特定ID(词)的查询向量(词向量)
# 访问某个ID,即第N个词的查询向量(词向量)
print(embedding(torch.LongTensor([3]))) # 这里表示查询第3个词的词向量————————————————————————————————————————
输出:
tensor([[-1.6016, -0.8350, -0.7878]], grad_fn=<EmbeddingBackward>)
pytorch中的gather函数_Pytorch中Emdedding函数的解释及使用方法相关推荐
- python数据处理常用函数_pytorch中的自定义数据处理详解
pytorch在数据中采用Dataset的数据保存方式,需要继承data.Dataset类,如果需要自己处理数据的话,需要实现两个基本方法. :.getitem:返回一条数据或者一个样本,obj[in ...
- python中如何反解函数_PyTorch中反卷积的用法详解
pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d(in_channels, out_channels, kernel_size, str ...
- torch的拼接函数_Pytorch中的torch.cat()函数
cat( )的用法 按维数0拼接(竖着拼) C = torch.cat( (A,B),0 ) 按维数1拼接(横着拼) C = torch.cat( (A,B),1 ) 按维数0拼接 A=torch.o ...
- pytorch指定用多张显卡训练_Pytorch中多GPU训练指北
前言 在数据越来越多的时代,随着模型规模参数的增多,以及数据量的不断提升,使用多GPU去训练是不可避免的事情.Pytorch在0.4.0及以后的版本中已经提供了多GPU训练的方式,本文简单讲解下使用P ...
- PyTorch的hook及其在Grad-CAM中的应用
文章目录 hook简介 PyTorch的四个hook 1. torch.Tensor.register_hook(hook) 2. torch.nn.Module.register_forward_h ...
- python中forward的作用_Pytorch学习笔记07----nn.Module类与前向传播函数forward的理解
1.nn.Module类理解 pytorch里面一切自定义操作基本上都是继承nn.Module类来实现的 方法预览: classModule(object):def __init__(self):de ...
- python中random模块中包含了随机数相关的功能函数_Python中random模块生成随机数详解...
print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20 print random.randint(20, 20) #结果永远是20 #pr ...
- python dump函数_python中实现php的var_dump函数功能
最近在做python的web开发(原谅我的多变,好东西总想都学着...node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短 ...
- python local函数_python中的函数
函数 一.函数的定义 def是可执行的代码.def创建了一个对象并将其赋值给某一变量名.def语句是实时执行的,即:def在运行时才进行评估,而在def之中的代码在函数调用后才会评估.函数本身就是一个 ...
最新文章
- windows平台HTTP代理server搭建(CCproxy)
- Scala的异常处理
- linux动态库替换,不要使用 cp 替换正在使用中的Linux 动态库
- 前端优秀博客网站收集
- 安装已停止,原因是 ProjectType 值的目录不存在。对于您所安装的 Visual St...
- (转)iOS 6的Rotation--详细版本
- 关于数据契约(DataContract)待续
- NOIP2011 铺地毯
- 【LeetCode笔记】142. 环形链表 II(Java、快慢指针)
- 如何识别新加的计算机硬盘,图文解说win10系统无法识别新加的机械硬盘的具体技巧...
- jdk说明文档_给JDK报了一个P4的Bug,结果居然……
- 微信小程序 --- 动态获取input的value
- React native 分享 友盟分享SDK
- CISP 考试教材《第 3 章 知识域:信息安全管理》知识整理
- 怎么查看linux系统防火墙,如何查看linux系统中防火墙的状态
- 一个老程序员的计算机视觉蹒跚学习之路
- 计算机时代汉字书写有了新的方式,网络时代的汉字书写
- 计算机导论黄国兴百度云,计算机导论黄国兴
- 没有计算器的日子怎么过——手动时期的计算工具
- java包含不区分大小写_Java不区分大小写。
热门文章
- mysql 实例复制_MySQL 复制详解及简单实例
- nio的优势_BIO、NIO、AIO 介绍和适用场景分析
- python docx 复制_python制作单词抽测题(word版)(一)
- 用Python算24点
- Linux 目录栈及目录切换
- position:sticky布局
- 没有找到MSVCP71.dll,迅雷5无法进行离线下载,P2P Seacher无法连入emule网络
- Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:使用函数...
- SQL Servr 2008空间数据应用系列一:空间信息基础
- PHP_TP5框架开发后端接口(代码编写思路)