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进行TCP网络编程的教程
Apr 29 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
Python利用flask sqlalchemy实现分页效果
Aug 02 Python
图解Python变量与赋值
Apr 03 Python
python实现猜单词小游戏
May 22 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
Jun 30 Python
python 如何对logging日志封装
Dec 02 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 Python
python 中[0]*2与0*2的区别说明
May 10 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 SQL Injection with MySQL
2011/02/27 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
npm qs模块使用详解
2020/02/07 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
简介Django中内置的一些中间件
2015/07/24 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python socket 套接字实现通信详解
2019/08/27 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
神路信息Java面试题目
2013/03/31 面试题
2014年幼儿园园长工作总结
2014/12/17 职场文书
写给医生的感谢信
2015/01/22 职场文书
北大自主招生自荐信
2015/03/04 职场文书
婚礼家长致辞
2015/07/27 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python