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 相关文章推荐
从零学Python之入门(三)序列
May 25 Python
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
Python绘制七段数码管实例代码
Dec 20 Python
python面试题小结附答案实例代码
Apr 11 Python
python的内存管理和垃圾回收机制详解
May 18 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
Python3 合并二叉树的实现
Sep 30 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
python中p-value的实现方式
Dec 16 Python
python 19个值得学习的编程技巧
Aug 15 Python
浅谈Python 中的复数问题
May 19 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
layui的select联动实现代码
2019/09/28 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
试用期员工考核制度
2014/01/22 职场文书
小学防溺水制度
2014/01/29 职场文书
天地会口号
2014/06/17 职场文书
物流专业求职信
2014/06/30 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers