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的Flask框架中@app.route的用法教程
Mar 31 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python中列表的切片与修改知识点总结
Jul 23 Python
Python的形参和实参使用方式
Dec 24 Python
Python属性和内建属性实例解析
Jan 14 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 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
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
取得传值的函数
2006/10/27 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
python实现的重启关机程序实例
2014/08/21 Python
python中Flask框架简单入门实例
2015/03/21 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
玩转python爬虫之正则表达式
2016/02/17 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
django 信号调度机制详解
2019/07/19 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
庆六一活动总结
2014/08/29 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
python之基数排序的实现
2021/07/26 Python
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
Python集合set()使用的方法详解
2022/03/18 Python