pytorch中的embedding词向量的使用方法


Posted in Python onAugust 18, 2019

Embedding

词嵌入在 pytorch 中非常简单,只需要调用 torch.nn.Embedding(m, n) 就可以了,m 表示单词的总数目,n 表示词嵌入的维度,其实词嵌入就相当于是一个大矩阵,矩阵的每一行表示一个单词。

emdedding初始化

默认是随机初始化的

import torch
from torch import nn
from torch.autograd import Variable
# 定义词嵌入
embeds = nn.Embedding(2, 5) # 2 个单词,维度 5
# 得到词嵌入矩阵,开始是随机初始化的
torch.manual_seed(1)
embeds.weight
# 输出结果:
Parameter containing:
-0.8923 -0.0583 -0.1955 -0.9656 0.4224
 0.2673 -0.4212 -0.5107 -1.5727 -0.1232
[torch.FloatTensor of size 2x5]

如果从使用已经训练好的词向量,则采用

pretrained_weight = np.array(args.pretrained_weight) # 已有词向量的numpy
self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))

embed的读取

读取一个向量。

注意参数只能是LongTensor型的

# 访问第 50 个词的词向量
embeds = nn.Embedding(100, 10)
embeds(Variable(torch.LongTensor([50])))
# 输出:
Variable containing:
 0.6353 1.0526 1.2452 -1.8745 -0.1069 0.1979 0.4298 -0.3652 -0.7078 0.2642
[torch.FloatTensor of size 1x10]

读取多个向量。

输入为两个维度(batch的大小,每个batch的单词个数),输出则在两个维度上加上词向量的大小。

Input: LongTensor (N, W), N = mini-batch, W = number of indices to extract per mini-batch
Output: (N, W, embedding_dim)

见代码

# an Embedding module containing 10 tensors of size 3
embedding = nn.Embedding(10, 3)
# 每批取两组,每组四个单词
input = Variable(torch.LongTensor([[1,2,4,5],[4,3,2,9]]))
a = embedding(input) # 输出2*4*3
a[0],a[1]

输出为:

(Variable containing:
 -1.2603 0.4337 0.4181
 0.4458 -0.1987 0.4971
 -0.5783 1.3640 0.7588
 0.4956 -0.2379 -0.7678
 [torch.FloatTensor of size 4x3], Variable containing:
 -0.5783 1.3640 0.7588
 -0.5313 -0.3886 -0.6110
 0.4458 -0.1987 0.4971
 -1.3768 1.7323 0.4816
 [torch.FloatTensor of size 4x3])

以上这篇pytorch中的embedding词向量的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
Python中extend和append的区别讲解
Jan 24 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
pymysql 开启调试模式的实现
Sep 24 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
深入了解python列表(LIST)
Jun 08 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 Python
Python Django项目和应用的创建详解
Nov 27 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 #Python
在pytorch中查看可训练参数的例子
Aug 18 #Python
浅析PyTorch中nn.Module的使用
Aug 18 #Python
关于PyTorch 自动求导机制详解
Aug 18 #Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 #Python
pytorch numpy list类型之间的相互转换实例
Aug 18 #Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 #Python
You might like
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
js实现筛选功能
2020/11/24 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python设计模式大全
2016/06/27 Python
Python实现KNN邻近算法
2021/01/28 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
若干个Java基础面试题
2015/05/19 面试题
化学专业自荐信
2014/05/28 职场文书
上海世博会口号
2014/06/19 职场文书
道德模范事迹材料
2014/12/20 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书