pytorch基于 Transformer 预训练模型的方法实现词嵌入(tiansz/bert-base-chinese)

news2025/2/4 0:53:11

以下是一个完整的词嵌入(Word Embedding)示例代码,使用 modelscope 下载 tiansz/bert-base-chinese 模型,并通过 transformers 加载模型,获取中文句子的词嵌入。

from modelscope.hub.snapshot_download import snapshot_download
from transformers import BertTokenizer, BertModel
import torch

# 下载模型到本地目录
model_dir = snapshot_download('tiansz/bert-base-chinese', cache_dir='./bert-base-chinese')
print(f"模型已下载到: {model_dir}")

# 本地模型路径
model_path = model_dir  # 使用下载的模型路径

# 从本地加载分词器和模型
tokenizer = BertTokenizer.from_pretrained(model_path)
model = BertModel.from_pretrained(model_path)

# 将模型设置为评估模式
model.eval()

# 输入句子
sentence = "你好,今天天气怎么样?"

# 分词并转换为模型输入格式
inputs = tokenizer(sentence, return_tensors='pt')

# 获取词嵌入
with torch.no_grad():
    outputs = model(**inputs)

# 输出的最后一层隐藏状态(即词嵌入)
last_hidden_states = outputs.last_hidden_state

# 打印词嵌入的形状
print("Embeddings shape:", last_hidden_states.shape)  # [batch_size, sequence_length, hidden_size]

# 获取所有 token 的文本表示
tokens = tokenizer.convert_ids_to_tokens(inputs['input_ids'][0])

# 打印每个 token 及其对应的嵌入
for i, (token, embedding) in enumerate(zip(tokens, last_hidden_states[0])):
    print(f"Token {i}: {token}")
    print(f"Embedding: {embedding[:10]}...")  # 只打印前 10 维
  1. 下载模型

    使用 modelscope 的 snapshot_download 方法下载 tiansz/bert-base-chinese 模型到本地目录 ./bert-base-chinese
  2. 加载模型

    使用 transformers 的 BertTokenizer 和 BertModel 从本地路径加载模型和分词器。
  3. 输入句子

    定义一个中文句子 "你好,今天天气怎么样?"
  4. 分词和编码

    使用分词器将句子转换为模型输入格式(包括 input_ids 和 attention_mask)。
  5. 获取词嵌入

    将输入传递给模型,获取最后一层隐藏状态(即词嵌入)。
  6. 输出结果

    打印每个 token 及其对应的嵌入向量(只打印前 10 维)。
Downloading Model to directory: ./bert-base-chinese/tiansz/bert-base-chinese
模型已下载到: ./bert-base-chinese/tiansz/bert-base-chinese
Embeddings shape: torch.Size([1, 13, 768])
Token 0: [CLS]
Embedding: tensor([ 1.0592,  0.1071,  0.4324,  0.0860,  0.9301, -0.6972,  0.7214, -0.0408,
        -0.1321, -0.1840])...
Token 1: 你
Embedding: tensor([ 0.2686,  0.1246,  0.4344,  0.5293,  0.7844, -0.7398,  0.4845, -0.3669,
        -0.6001,  0.8876])...
Token 2: 好
Embedding: tensor([ 0.9697,  0.3952,  0.6012, -0.0386,  0.6996, -0.4031,  1.0839,  0.0119,
         0.0551,  0.2817])...
Token 3: ,
Embedding: tensor([ 0.8255,  0.6987,  0.0310,  0.4167, -0.0159, -0.5835,  1.4922,  0.3883,
         0.9030, -0.1529])...
Token 4: 今
Embedding: tensor([ 0.1640,  0.2744,  0.6168,  0.0693,  1.0125, -0.4001, -0.2779,  0.6306,
        -0.1302, -0.0534])...
Token 5: 天
Embedding: tensor([ 0.5449, -0.1022,  0.0316, -0.4571,  0.6967,  0.0789,  0.6432,  0.0501,
         0.3832, -0.3269])...
Token 6: 天
Embedding: tensor([ 1.0107, -0.3673, -1.0272, -0.1893,  0.3766,  0.2341,  0.3552,  0.0228,
        -0.2411, -0.2227])...
Token 7: 气
Embedding: tensor([ 0.9320, -0.8562, -0.9696,  0.2202,  0.1046,  0.3335, -0.2725, -0.3014,
        -0.0057, -0.2503])...
Token 8: 怎
Embedding: tensor([ 0.7004, -0.3408,  0.1803, -0.0093, -0.0996,  0.9946,  0.0251,  0.0321,
         0.1867, -0.6998])...
Token 9: 么
Embedding: tensor([ 0.7296,  0.0704,  0.2153, -0.2680, -0.4890,  0.8920,  0.0324, -0.0820,
         0.5248, -0.6742])...
Token 10: 样
Embedding: tensor([ 0.2482,  0.0567,  0.2574,  0.1359,  0.4210,  0.9753,  0.2528, -0.2645,
         0.3426, -0.4405])...
Token 11: ?
Embedding: tensor([ 1.4162,  0.4149,  0.1098, -0.7175,  0.9875, -0.4366,  0.8482,  0.2046,
         0.2398, -0.1031])...
Token 12: [SEP]
Embedding: tensor([ 0.2140,  0.1362,  0.3720,  0.5722,  0.3005, -0.1858,  1.1392,  0.2413,
        -0.1240,  0.0177])...

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网 STM32【源代码形式-使用以太网】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

物联网(IoT)‌是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器等装置与技术,实时采集并连接任何需要监控、连接、互动的物体或过程,实现对物品和过程的智能化感知、识别和管理。物联网的核心功能包括数据采集与监…

谭浩强C语言程序设计(4) 8章(下)

1、输入三个字符串按照字母顺序从小到大输出 #include <cstdio> // 包含cstdio头文件&#xff0c;用于输入输出函数 #include <cstring> // 包含cstring头文件&#xff0c;用于字符串处理函数#define N 20 // 定义字符串的最大长度为20// 函数&#xff1a;…

使用朴素贝叶斯对散点数据进行分类

本文将通过一个具体的例子&#xff0c;展示如何使用 Python 和 scikit-learn 库中的 GaussianNB 模型&#xff0c;对二维散点数据进行分类&#xff0c;并可视化分类结果。 1. 数据准备 假设我们有两个类别的二维散点数据&#xff0c;每个类别包含若干个点。我们将这些点分别存…

【Pytorch和Keras】使用transformer库进行图像分类

目录 一、环境准备二、基于Pytorch的预训练模型1、准备数据集2、加载预训练模型3、 使用pytorch进行模型构建 三、基于keras的预训练模型四、模型测试五、参考 现在大多数的模型都会上传到huggface平台进行统一的管理&#xff0c;transformer库能关联到huggface中对应的模型&am…

Python 深拷贝与浅拷贝:数据复制的奥秘及回溯算法中的应用

引言 在 Python 编程领域&#xff0c;数据复制是极为常见的操作。而深拷贝和浅拷贝这两个概念&#xff0c;如同紧密关联却又各具特色的双子星&#xff0c;在数据处理过程中扮演着重要角色。深入理解它们&#xff0c;不仅有助于编写出高效、准确的代码&#xff0c;还能避免许多…

简单易懂的倒排索引详解

文章目录 简单易懂的倒排索引详解一、引言 简单易懂的倒排索引详解二、倒排索引的基本结构三、倒排索引的构建过程四、使用示例1、Mapper函数2、Reducer函数 五、总结 简单易懂的倒排索引详解 一、引言 倒排索引是一种广泛应用于搜索引擎和大数据处理中的数据结构&#xff0c;…

初级数据结构:栈和队列

目录 一、栈 (一)、栈的定义 (二)、栈的功能 (三)、栈的实现 1.栈的初始化 2.动态扩容 3.压栈操作 4.出栈操作 5.获取栈顶元素 6.获取栈顶元素的有效个数 7.检查栈是否为空 8.栈的销毁 9.完整代码 二、队列 (一)、队列的定义 (二)、队列的功能 (三&#xff09…

阿里云 - RocketMQ入门

前言 云消息队列 RocketMQ 版产品具备异步通信的优势&#xff0c;主要应用于【异步解耦】、【流量削峰填谷】等场景对于同步链路&#xff0c;需要实时返回调用结果的场景&#xff0c;建议使用RPC调用方案阿里云官网地址RocketMQ官网地址 模型概述 生产者生产消息并发送至服务…

Agentic Automation:基于Agent的企业认知架构重构与数字化转型跃迁---我的AI经典战例

文章目录 Agent代理Agent组成 我在企业实战AI Agent企业痛点我构建的AI Agent App 项目开源 & 安装包下载 大家好&#xff0c;我是工程师令狐&#xff0c;今天想给大家讲解一下AI智能体&#xff0c;以及企业与AI智能体的结合&#xff0c;文章中我会列举自己在企业中Agent实…

列表标签(无序列表、有序列表)

无序列表 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><…

每天学点小知识之设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解模板方法模式 模板方法模式是结构最简单的行为型设计模式&#xff0c;在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式&#xff0c;可以将一些复杂流程的实现步骤封装在一系列基…

AI开发学习之——PyTorch框架

PyTorch 简介 PyTorch &#xff08;Python torch&#xff09;是由 Facebook AI 研究团队开发的开源机器学习库&#xff0c;广泛应用于深度学习研究和生产。它以动态计算图和易用性著称&#xff0c;支持 GPU 加速计算&#xff0c;并提供丰富的工具和模块。 PyTorch的主要特点 …

SAP HCM insufficient authorization, no.skipped personnel 总结归纳

导读 权限:HCM模块中有普通权限和结构化权限。普通权限就是PFCG的权限&#xff0c;结构化权限就是按照部门ID授权&#xff0c;颗粒度更细&#xff0c;对分工明细化的单位尤其重要&#xff0c;今天遇到的问题就是结构化权限的问题。 作者&#xff1a;vivi&#xff0c;来源&…

机器学习算法在网络安全中的实践

机器学习算法在网络安全中的实践 本文将深入探讨机器学习算法在网络安全领域的应用实践&#xff0c;包括基本概念、常见算法及其应用案例&#xff0c;从而帮助程序员更好地理解和应用这一领域的技术。"> 序言 网络安全一直是信息技术领域的重要议题&#xff0c;随着互联…

java-抽象类注意点

ChinesePerson 类 public class ChinesePerson extends Person{public ChinesePerson(){}public ChinesePerson(String name, int age){super(name, age);}Overridepublic void greet() {System.out.println("你好&#xff0c;我的名字叫" this.getName());} }Engl…

问deepseek,如何看待ai降低学习成本而导致软件开发岗位需求降低,和工资下降。 软件从业人员何去何从?

它给我的回答是这样的&#xff1a; 思考逻辑 嗯&#xff0c;用户问的是AI如何降低学习成本&#xff0c;进而导致软件开发岗位需求减少和工资下降&#xff0c;以及软件从业人员该怎么办。这个问题挺复杂的&#xff0c;我得先理清楚各个部分。首先&#xff0c;AI确实在改变很多行…

Jason配置环境变量

jason官网 https://jason-lang.github.io/ https://github.com/jason-lang/jason/releases 步骤 安装 Java 21 或更高版本 安装 Visual Studio Code 根据操作系统&#xff0c;请按照以下具体步骤操作 视窗 下载 Jason 的最新版本&#xff0c;选择“jason-bin-3.3.0.zip”…

word2vec 实战应用介绍

Word2Vec 是一种由 Google 在 2013 年推出的重要词嵌入模型,通过将单词映射为低维向量,实现了对自然语言处理任务的高效支持。其核心思想是利用深度学习技术,通过训练大量文本数据,将单词表示为稠密的向量形式,从而捕捉单词之间的语义和语法关系。以下是关于 Word2Vec 实战…

AI技术在SEO关键词优化中的应用策略与前景展望

内容概要 在数字营销的快速发展中&#xff0c;AI技术逐渐成为SEO领域的核心驱动力。其通过强大的数据分析和处理能力&#xff0c;不仅改变了我们优化关键词的方式&#xff0c;也提升了搜索引擎优化的效率和效果。在传统SEO中&#xff0c;关键词的选择与组合常依赖人工经验和直…

c/c++高级编程

1.避免变量冗余初始化 结构体初始化为0&#xff0c;等价于对该内存进行一次memset&#xff0c;对于较大的结构体或者热点函数&#xff0c;重复的赋值带来冗余的性能开销。现代编译器对此类冗余初始化代码具有一定的优化能力&#xff0c;因此&#xff0c;打开相关的编译选项的优…