已解决
pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)
来自网友在路上 170870提问 提问时间:2023-10-23 03:09:29阅读次数: 70
最佳答案 问答题库708位专家为你答疑解惑
最近在跑深度学习模型,发现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。
*也许看了上面你依然会一脸懵(别着急,下面给你举个例子)
4、案例
import gensim
import torch
import torch.nn as nnmodel = 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。
查看全文
99%的人还看了
相似问题
- 23. 深度学习 - 多维向量自动求导
- 【腾讯云云上实验室-向量数据库】探索腾讯云向量数据库:全方位管理与高效利用多维向量数据的引领者
- 分类预测 | Matlab实现基于DBN-SVM深度置信网络-支持向量机的数据分类预测
- 【VRTK】【VR开发】【Unity】7-配置交互能力和向量追踪
- 【腾讯云云上实验室-向量数据库】TAI时代的数据枢纽-向量数据库 VectorDB
- 计算两个向量的叉积numpy.cross()
- LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
- 《向量数据库指南》——什么是 向量数据库Milvus Cloud的Range Search?
- 《向量数据库指南》——亚马逊云科技向量数据库揭秘:点亮数据未来!
- 亚马逊云Amazon OpenSearch Serverless“利刃在手,‘向量’八方“
猜你感兴趣
版权申明
本文"pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)":http://eshow365.cn/6-22127-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!