pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)

这篇具有很好参考价值的文章主要介绍了pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       最近在跑深度学习模型,发现Embedding随机性太强导致模型结果有出入,因此考虑固定初始随机向量,既提前训练好词/字向量,不多说上代码!!

1、利用gensim训练字向量(词向量自行修改)

# 得到每一行的数据 []
datas = open('data/word.txt', 'r', encoding='gbk').read().split("\n")
# 得到一行的单个字 [[],...,[]]
word_datas = [[i for i in data if i != " "] for data in datas] 
model = Word2Vec(
    word_datas,  # 需要训练的文本
    vector_size=10,   # 词向量的维度
    window=2,  # 句子中当前单词和预测单词之间的最大距离
    min_count=1,  # 忽略总频率低于此的所有单词 出现的频率小于 			min_count 不用作词向量
    workers=8,  # 使用这些工作线程来训练模型(使用多核机器进行更快的训练)
    sg=0,  # 训练方法 1:skip-gram 0;CBOW。
    epochs=10  # 语料库上的迭代次数
	)

2、保存模型或者字向量

#字向量保存
model.wv.save_word2vec_format('word_data.vector',   # 保存路径
                              binary=False  # 如果为 True,则数据将以二进制 word2vec 格式保存,否则将以纯文本格式保存
                              )
#模型保存
model.save('word.model')

3、nn.Embedding读取gensim模型

model = gensim.models.Word2Vec.load('./word.model')
weights = torch.FloatTensor(model.wv.vectors)
embedding = nn.Embedding.from_pretrained(weights)
embedding.requires_grad = False

       这里懒了,拷贝别人的图,debug就可以看看,简单理解下就是有X个字,就有X行,然后每个字用Y个数字表示,就是Y列,上图X=4799,Y=10。

pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子),AI,pytorch,人工智能,embedding,gensim,字向量,词向量

*也许看了上面你依然会一脸懵(别着急,下面给你举个例子)文章来源地址https://www.toymoban.com/news/detail-722583.html

4、案例

import gensim
import torch
import torch.nn as nn

model = gensim.models.Word2Vec.load('./word.model')
weights = torch.FloatTensor(model.wv.vectors)

embedding = nn.Embedding.from_pretrained(weights)
embedding.requires_grad = False #训练时候不训练向量

query = '天氣'
query_id = torch.tensor(model.wv.vocab['天氣'].index)

#下面只是查询,具体的根据你自己的训练即可
gensim_vector = torch.tensor(model[query])
embedding_vector = embedding(query_id)

print(gensim_vector==embedding_vector)

#首先將 Gensim 的預訓練模型讀取進來,並將其向量轉換成 PyTorch 所需要的資料格式 Tensor,當作 nn.Embedding() 的初始值。
#這裡有個小細節:如果並不打算在模型訓練過程中一併訓練 nn.Emedding(),要記得將其設定為 requires_grad = False。

到了这里,关于pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch常用的函数(二)pytorch中nn.Embedding原理及使用

    图像数据表达不需要特殊的编码,并且有天生的顺序性和关联性,近似的数字会被认为是近似的特征。 正如图像是由像素组成,语言是由词或字组成,可以把语言转换为词或字表示的集合。 然而,不同于像素的大小天生具有色彩信息,词的数值大小很难表征词的含义。最初

    2024年02月09日
    浏览(31)
  • Pytorch应用训练好的模型

    保存训练好的模型有两种方式,第一种保存模型结构且保存模型参数,第一种方式存在一种陷阱,也就是每次加载模型都得把类定义,或者访问类所在的包。保存方式为: torch.save(模型名, 以pth为后缀的文件) 第二种保存方式只保存模型参数,不保存模型结构,这样可以面对较

    2023年04月08日
    浏览(25)
  • pytorch进阶学习(六):如何对训练好的模型进行优化、验证并且对训练过程进行准确率、损失值等的可视化,新手友好超详细记录

    课程资源:  7、模型验证与训练过程可视化【小学生都会的Pytorch】【提供源码】_哔哩哔哩_bilibili 推荐与上一节笔记搭配食用~: pytorch进阶学习(五):神经网络迁移学习应用的保姆级详细介绍,如何将训练好的模型替换成自己所需模型_好喜欢吃红柚子的博客-CSDN博客 训练

    2023年04月17日
    浏览(35)
  • 自然语言处理(四):全局向量的词嵌入(GloVe)

    全局向量的词嵌入(Global Vectors for Word Representation),通常简称为GloVe,是一种用于将词语映射到连续向量空间的词嵌入方法。它旨在捕捉词语之间的语义关系和语法关系,以便在自然语言处理任务中能够更好地表示词语的语义信息。 GloVe的设计基于两个观察结果:共现矩阵(

    2024年02月11日
    浏览(36)
  • PyTorch读取数据集全部进内存,使网络的训练速度提高10倍以上!!!

    正常情况下,torch读取数据的时候是Batch Size小批量读取。 首先找到所有数据集的路径保持到一个变量中,之后需要读取哪个数据的时候,就根据这个变量中的路径索引去读取。因为硬件的限制,从硬盘中读取数据到显存中所花的时间要远远大于从内存中读取数据到显存中。因

    2024年02月05日
    浏览(28)
  • 自然语言处理从入门到应用——全局向量的词嵌入:GloVe(Global Vectors for Word Representation)词向量

    分类目录:《自然语言处理从入门到应用》总目录 无论是基于神经网络语言模型还是word2vec的词向量预训练方法,本质上都是利用文本中词与词在局部上下文中的共现信息作为自监督学习信号。除此之外,另一类常用于估计词向量的方法是基于矩阵分解的方法,例如潜在语义

    2024年02月09日
    浏览(32)
  • Embedding 向量生成GPT数据使用相关

    如果使用python3.6的版本,使用pycharm创建工程,那么默认会使用 docx包,这样运行程序会爆异常,突然想起以前请教的一个大神,想当 初,这个问题困扰了我 两天时间,在此记录一下: python-docx 一直报这个错误: 解决办法:  修改注册表信息 参考:https://github.com/pypa/pip/iss

    2024年02月11日
    浏览(23)
  • 大模型必备 - 中文最佳向量模型 acge_text_embedding

    近期,上海合合信息科技股份有限公司发布的文本向量化模型 acge_text_embedding 在中文文本向量化领域取得了重大突破,荣获 Massive Text Embedding Benchmark (MTEB) 中文榜单(C-MTEB)第一名的成绩。这一成就标志着该模型将在大模型领域的应用中发挥更加迅速和广泛的影响。 假设你需

    2024年04月25日
    浏览(22)
  • Elasticsearch:使用向量搜索来查询及比较文字 - NLP text embedding

    Elastic Stack 机器学习功能可以生成嵌入(embeddings),你可以使用它在非结构化文本中搜索或比较不同的文本片段。传统上,我们在搜索文本的时候,更加倾向于把文字进行分词,然后再对 token 进行比对: 在上面,我们在文字中完全或部分匹配分词后的 token,从而完成我们的

    2024年02月09日
    浏览(31)
  • 2.自然语言处理NLP:词映射为向量——词嵌入(word embedding)

    1. 什么是词嵌入(word2vec) : 把词映射为向量(实数域)的技术 2. 为什么不采用one-hot向量: one-hot词向量无法准确表达不同词之间的相似度,eg:余弦相似度,表示夹角之间的余弦值,无法表达不同词之间的相似度。 3. word2vec主要包含哪两个模型 跳字模型: 基于某个词生成

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包