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中字典的基础知识归纳小结
Aug 19 Python
浅谈对yield的初步理解
May 29 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
python 读取DICOM头文件的实例
May 07 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
Aug 09 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python 使用双重循环打印图形菱形操作
Aug 09 Python
简述python Scrapy框架
Aug 17 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
Python&Matlab实现樱花的绘制
Apr 07 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 读取Postgresql中的数组
2013/04/14 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
Javascript - HTML的request类
2006/07/15 Javascript
js快速排序的实现代码
2013/12/08 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
sklearn+python:线性回归案例
2020/02/24 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
英文版网络工程师求职信
2013/10/28 职场文书
中国好声音华少广告词
2014/03/17 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
2014年审计工作总结
2014/11/17 职场文书
先进个人推荐材料
2014/12/29 职场文书
公司回复函格式
2015/07/14 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书