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。

在这里插入图片描述

*也许看了上面你依然会一脸懵(别着急,下面给你举个例子)

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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/166416.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SegFormer的改进语义分割该网络

摘要 场景解析是无人驾驶领域的一个关键任务,但是传统的语义分割网络往往只关注于提取更深层次的图像语义信息而忽略了全局信息对图像分割任务的重要性。另外随着图像在深层次卷积网络中的传递,卷积核天然的滤波作用会使得图像的边缘趋于平滑而丢失细节特…

Visual Studio 2022下载安装的详细步骤-----C语言编辑器

目录 一、介绍 (一)和其他软件的区别 (二)介绍编写C语言的编辑器类型 二、下载安装 三、创建与运行第一个C语言程序 (一)创建项目 (二)新建文件 (三&#xff09…

深度学习---神经网络基础

深度学习概述 机器学习是实现人工智能的一种途径,深度学习是机器学习的一个子集,深度学习是实现机器学习的一种方法。与机器学习算法的主要区别如下图所示: 传统机器学习算术依赖人工设计特征,并进行特征提取,而深度学…

数据结构----算法--五大基本算法(这里没有写分支限界法)和银行家算法

数据结构----算法–五大基本算法(这里没有写分支限界法)和银行家算法 一.贪心算法 1.什么是贪心算法 在有多个选择的时候不考虑长远的情况,只考虑眼前的这一步,在眼前这一步选择当前的最好的方案 二.分治法 1.分治的概念 分…

公有云厂商---服务对照表

各厂商特点: Compute: Network: Storage: Database: Migration Tool: Identify: WAF: 来源:https://comparecloud.in/

【网络安全 --- xss-labs靶场通关(1-10关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

靶场安装: 靶场安装请参考以下博客,既详细有提供工具: 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)-CSDN博客【网络安全 --- xss-labs通…

嵌入式硬件中常见的100种硬件选型方式

1请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌)。 电阻: 美国:AVX、VISHAY 威世 日本:KOA 兴亚、Kyocera 京瓷、muRata 村田、Panasonic 松下、ROHM 罗姆、susumu、TDK 台湾:LIZ 丽智、PHY…

服务器数据恢复-RAID5中磁盘被踢导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: 一台3U的某品牌机架式服务器,Windows server操作系统,100块SAS硬盘组建RAID5阵列。 服务器故障: 服务器有一块硬盘盘的指示灯亮黄灯,这块盘被raid卡踢出后,raid阵列崩溃。 服务器数据…

JavaEE初阶学习:Servlet

1.Servlet 是什么 Servlet 是一种 Java 程序,用于在 Web 服务器上处理客户端请求和响应。Servlet 可以接收来自客户端(浏览器、移动应用等)的 HTTP 请求,并生成 HTML 页面或其他格式的数据,然后将响应发送回客户端。S…

解决CondaHTTPError HTTP 000 CONNECTION FAILED for url解决方法

解决CondaHTTPError: HTTP 000 CONNECTION FAILED for url解决方法 问题:使用conda install命令安装包提示CondaHTTPError: HTTP 000 CONNECTION FAILED for url 分析:网络连接问题,大概率是网速不行或者源没有换 解决方案:修改国…

C++多态、虚函数、纯虚函数、抽象类

多态的概念 通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 举个简单的例子:抢红包,我们每个人都只需要点击一下红包,就会抢到金额。有些人能…

5G学习笔记之5G频谱

参考:《5G NR通信标准》1. 5G频谱 1G和2G移动业务的频段主要在800MHz~900MHz,存在少数在更高或者更低频段;3G和4G的频段主要在450MHz ~ 6GHz;5G主要是410MHz ~ 6GHz,以及24GHz ~ 52GHz。 5G频谱跨度较大,可…

开源贡献难吗?

本文整理自字节跳动 Flink SQL 技术负责人李本超在 CommunityOverCode Asia 2023 上的 Keynote 演讲,李本超根据自己在开源社区的贡献经历,基于他在贡献开源社区过程中的一些小故事和思考,如何克服困难,在开源社区取得突破&#x…

Spark--经典SQL50题

目录 连接数据库准备工作 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数 3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩 4、查询平均成绩…

在Kubernetes(k8s)上部署整个SpringCloud微服务应用

视频教程地址:https://www.bilibili.com/video/BV1Xh4y1q7aW/ 文章目录 项目准备打成使用Docker打成镜像准备Docker仓库打包项目为Docker镜像 部署应用到k8s创建nfs挂载目录创建一些基本资源创建命名空间创建拉取镜像的secret创建java运行环境的profile 部署mysql创…

Unity中Shader的XRay透视效果

文章目录 前言一、模拟菲涅尔效果1、获取 V 向量2、获取 N 向量3、点积输出效果4、模拟出菲涅尔效果(中间暗,周围亮) 二、实现 XRay 效果1、使用半透明排序、修改混合模式、加点颜色2、增加分层效果(使用 frac 函数,只取小数部分&…

【深入探究Java集合框架】从List到Map的完整指南

文章目录 🌟 Java集合框架🍊 Collection🎉 List🎉 Set🎉 Map 🍊 集合的选择🎉 1. 有序并允许重复元素的集合 List🎉 2. 无序并且不允许重复元素的集合 Set🎉 3. 维护映射…

【计网 EMail】计算机网络 EMail协议详解:中科大郑烇老师笔记 (五)

目录 0 引言1 电子邮件EMail1.1 组成1.2 SMTP协议1.3 案例:Alice给Bob发送报文1.4 SMTP总结1.5 邮件报文格式1.6 POP3协议和IMAP协议 🙋‍♂️ 作者:海码007📜 专栏:计算机四大基础专栏📜 其他章节&#xf…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-安全接管策略

书接上回 2.3.6安全接管策略 为保障辅助驾驶车辆的安全性,在辅助驾驶系统运行过程中,对出现的影响系统稳定性的异常情况,制定对应的安全接管策略。 异常情况可能包括:系统传感器、控制器、执行器、电源、通讯、备份系统等的故障或失效,驾驶员异常行为(如不响应车辆的接管…

毅速丨3D打印结合拓扑优化 让轻量化制造更容易

制造轻量化对于提高能源利用效率、提高产品性能和减少环境影响,推动制造业的绿色化、高质量发展具有重要的促进作用。 轻量化设计对许多领域都有着重要影响,尤其是那些需要降低能源消耗、提高运输效率或减少对环境影响的领域。如航空航天,轻量…