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入门篇之字符串
Oct 17 Python
Python生成随机MAC地址
Mar 10 Python
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
几种实用的pythonic语法实例代码
Feb 24 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
python opencv实现简易画图板
Aug 27 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
解决hive中导入text文件遇到的坑
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
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
跟老齐学Python之for循环语句
2014/10/02 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
学习python可以干什么
2019/02/26 Python
python用for循环求和的方法总结
2019/07/08 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
python实现图像拼接
2020/03/05 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
主题婚礼策划方案
2014/02/10 职场文书
网站客服岗位职责
2014/04/05 职场文书
组工干部演讲稿
2014/09/02 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
党员作风建设自查报告
2014/10/23 职场文书
企业承诺书格式范文
2015/04/28 职场文书