当前位置: 首页 > news >正文

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。

相关文章:

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

最近在跑深度学习模型,发现Embedding随机性太强导致模型结果有出入,因此考虑固定初始随机向量,既提前训练好词/字向量,不多说上代码!! 1、利用gensim训练字向量(词向量自行修改) #…...

2.1.1BFS中的Flood Fill和最短路模型

1.池塘计数 农夫约翰有一片 N ∗ M N∗M N∗M 的矩形土地。 最近,由于降雨的原因,部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内,如果包含雨水,则用”W”表示,如果不含雨水,…...

Mysql 新增更新、删除新增、忽略

当主键或唯一键冲突时,Mysql可以进行更新、删除新增、忽略插入等操作。 1.更新 当主键或唯一键冲突时,可以指定更新内容。 INSERT INTO table_name (column_name, column_name, column_name) VALUES (column_value, column_value,column_value) ON DUPL…...

Node-模块系统的用法

题记 node.js模块系统的用法,以下是具体操作过程和代码 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。 一个 Node.js 文件就是一个模块,这…...

XSS攻击(1), 测试XSS漏洞, 获取cookie

XSS漏洞, 测试XSS漏洞, 获取cookie 一, 概念: XSS(Cross-Site Scripting), 跨站攻击脚本, XSS漏洞发生在前端, 依赖于浏览器的解析引擎, 让前端执行攻击代码. XSS其实也算注入类的攻击, XSS代码注入需要有JavaScript编程基础. 二, 目的: XSS(跨站脚本&#xff0…...

linux任务优先级

这篇笔记记录了linux任务(指线程而非进程)优先级相关的概念,以及用户态可以用来操作这些优先级的系统调用。 基本概念 调度策略 linux内核中的调度器为任务定义了调度策略,也叫调度类,每个任务同一时刻都有唯一的调…...

JVM内存模型概述

这里主要分为五大块,分别是:本地方法栈、方法区、java堆、程序计数器和java栈。其中重点是方法区、java堆和java栈。 下面就把各个区域的性质总结一下:(说明,下面的只是结论,没有详细的对各个内存块进行详细…...

【JavaEE】CAS -- 多线程篇(7)

CAS 1. 什么是 CAS2. CAS 伪代码3. CAS 是怎么实现的4. CAS的应用4.1 实现原子类4.2 实现自旋锁 5. CAS 的 ABA 问题 1. 什么是 CAS CAS: 全称Compare and swap,字面意思:”比较并交换“能够比较和交换 某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另…...

18-spring 事务

文章目录 1. xml和注解配置方式的对象2.spring事务传播特性3. 注解事务的初始化流程4. 创建事务信息流程图5. 事务回滚流程图 1. xml和注解配置方式的对象 2.spring事务传播特性 事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务,就新建一个事务&#xf…...

Qt窗体设计的布局

本文介绍Qt窗体的布局。 Qt窗体的布局分为手动布局和自动布局,手动布局即靠手工排布各控件的位置。而自动布局则是根据选择的布局类型自动按此类型排布各控件的位置,使用起来比较方便,本文主要介绍Qt的自动布局。 1.垂直布局 垂直布局就是…...

分布式锁 - 理论篇

一、为什么需要分布式锁 二、分布式锁实现 1.分布式锁演进 - 基本原理 我们可以同时去一个地方“占坑”,如果占到,就执行逻辑。否则就必须等待,直到释放锁。“占坑”可以去redis,可以去数据库,可以去任何大家都能访…...

复杂的菱形继承及菱形虚拟继承(详解)

复杂的菱形继承及菱形虚拟继承 复杂的菱形继承及菱形虚拟继承虚拟继承解决数据冗余和二义性的原理笔试面试题 复杂的菱形继承及菱形虚拟继承 单继承:一个子类只有一个直接父类时称这个继承关系为单继承 多继承:一个子类有两个或以上直接父类时称这个继…...

【快捷测试模型是否可以跑通】设置一张图片的张量形式,送入自己写的模型进行测试

文章目录 1. 1. import torch.nn as nn import torch from einops import rearrange, repeat from einops.layers.torch import Rearrange import torch.nn.functional as Fclass PreNorm(nn.Module):def __init__(self, dim, fn):super().__init__()self.norm nn.LayerNorm(…...

软考系列(系统架构师)- 2019年系统架构师软考案例分析考点

试题一 软件架构(架构风格、质量属性) 【问题1】(13分) 针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…...

安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…...

C++设计模式_08_Factory Method工厂方法模式

文章目录 1. “对象创建模式”模式1.1 典型模式 2. 动机(Motivation)3. 代码演示Factory Method工厂方法模式3.1 常规方法3.2 面向接口的编程3.2.1 FileSplitter1.cpp3.2.2 MainForm1.cpp 3.3 Factory Method工厂方法3.3.1 ISplitterFactory.cpp3.3.2 Ma…...

【TensorFlow1.X】系列学习笔记【基础一】

【TensorFlow1.X】系列学习笔记【基础一】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【基础一】前言线性回归非线性回归逻辑回归总结 前言 本篇博主将用最简洁的代码由浅入…...

Linux 基础操作手记三(内存篇)

Linux 基础操作手记三 释放内存虚拟机彻底无网络测试网速设置虚拟内存交换空间未使用虚拟机设置虚拟内存无法开机问题GParted - 分配内存系统盘扩容自己 释放内存 sync && echo 3 > /proc/sys/vm/drop_caches 虚拟机彻底无网络 还原默认设置,静静的等待…...

NodeJS的初使用,以及引入第三方插件和安装淘宝镜像的教程

NodeJs 命令 npm init -y 生成package.json文件npm i jquery --save–dev 开发依赖(jQuery后面还可以跟模块,可以有多个)npm i jquery --save 生产依赖npm i jquery --D 开发依赖npm uninstall jquery 卸载删除npm i 把删掉的模块,全部重新加载回来 1.介绍 1.什么是NodeJs?…...

Java读取文件的N种方法

1.概述 在这篇文章里, 我们将探索不同的方式从文件中读取数据。 首先, 学习通过标准的的Java类,从classpath、URL或者Jar中加载文件。 然后,学习通用BufferedReader, Scanner, StreamTokenizer, DataInputStream, SequenceInput…...

WinUtil:Windows系统优化与管理的全栈解决方案,提升系统效率50%以上

WinUtil:Windows系统优化与管理的全栈解决方案,提升系统效率50%以上 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil W…...

从卫星照片到 actionable insights:手把手教你用Python+GDAL实现遥感地物自动识别(以植被/水体为例)

从卫星照片到Actionable Insights:PythonGDAL实战遥感地物识别 当一张卫星照片摆在面前,大多数人看到的是色彩斑斓的图案,而开发者看到的却是隐藏在像素背后的数据金矿。本文将带您用Python和GDAL工具链,从零实现卫星影像中植被与…...

Golang怎么读取环境变量_Golang如何用os.Getenv获取系统环境变量【基础】

os.Getenv读不到变量是因为进程只继承启动时的环境快照,需确认变量已生效;其返回空字符串无法区分“未设置”和“值为空”,应改用os.LookupEnv判断存在性。os.Getenv 读不到变量?先确认它真在进程环境里Go 程序启动时会拷贝父进程…...

游戏鼠标指针太小看不清?YoloMouse开源工具三步解决光标可视化难题

游戏鼠标指针太小看不清?YoloMouse开源工具三步解决光标可视化难题 【免费下载链接】YoloMouse Game Cursor Changer 项目地址: https://gitcode.com/gh_mirrors/yo/YoloMouse 在激烈的游戏对战中,你是否曾因鼠标指针太小、颜色与背景融合而迷失方…...

终极指南:如何使用TegraRcmGUI轻松完成Switch RCM注入

终极指南:如何使用TegraRcmGUI轻松完成Switch RCM注入 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Nintendo Switch设计…...

ESP32-C3 WiFi实战:从零搭建一个能自动配网的智能插座(附完整代码)

ESP32-C3智能插座开发实战:从零构建自动配网系统 想象一下,当你把新买的智能插座插上电源,手机轻轻一点就能完成配网,无需手动输入WiFi密码——这种丝滑的用户体验背后,是ESP32-C3的SmartConfig技术在支撑。本文将带你…...

从PyTorch到RV1126:手把手教你用RKNN-Toolkit Lite在嵌入式设备上部署YOLOv5

从PyTorch到RV1126:YOLOv5模型在Rockchip平台的终极部署指南 当YOLOv5遇上Rockchip RV1126,会擦出怎样的火花?作为嵌入式AI开发者,你一定遇到过这样的困境:在PC端训练好的高性能模型,到了资源受限的边缘设备…...

保姆级教程:用Intel Realsense D435i和Aruco Marker搞定Dobot Magician手眼标定(附常见报错解决)

从零开始实现Dobot Magician与Realsense D435i的高精度手眼标定 当你第一次将Dobot Magician机械臂与Intel Realsense D435i深度相机组合使用时,手眼标定可能是最令人头疼的环节之一。作为机器人视觉系统的核心步骤,精确的手眼标定直接决定了后续抓取、分…...

从流水灯看FPGA时序:用Nexys A7的100MHz时钟实现精准0.5秒延时

从流水灯看FPGA时序:用Nexys A7的100MHz时钟实现精准0.5秒延时 在数字电路设计中,时序控制是一切逻辑实现的基础。当我们用FPGA开发板上的LED灯实现流水效果时,表面看似简单的闪烁背后,隐藏着精密的时钟分频与计数器设计原理。本…...

nli-MiniLM2-L6-H768应用场景:智能合约条款与自然语言解释的矛盾性检测

nli-MiniLM2-L6-H768应用场景:智能合约条款与自然语言解释的矛盾性检测 1. 模型核心能力解析 nli-MiniLM2-L6-H768是一个专为文本关系判断设计的轻量级自然语言推理(NLI)模型。与生成式模型不同,它的核心价值在于精准判断两段文本之间的逻辑关系&#…...