pytorch 的embeding

本文介绍如何使用PyTorch的Embedding功能构建词向量,包括词典构造及词向量、句子向量的生成过程。
部署运行你感兴趣的模型镜像

pytorch提供word embeding的功能来构建词向量,非稀疏向量。我们来看看他的定义方式:

import torch.nn as NN
import torch
from torch.autograd import Variable
embeding=NN.Embedding(6,5)
print(embeding.weight)

输出:

Parameter containing:
tensor([[ 1.8258, -1.8348, -1.2096,  1.0891,  0.0996],
        [ 0.3915,  0.6089,  1.4112,  0.2724, -0.3034],
        [ 1.3619,  0.2148, -0.2694, -0.6444, -0.6987],
        [ 1.4956,  0.3266, -0.3316, -0.9657,  0.6713],
        [ 0.3749, -0.9375, -0.8220, -1.3379,  0.1247],
        [-1.4812,  0.1289,  0.8787, -1.0455,  0.9147]])

这里NN.Embedding(6,5)两个参数第一个是指词典中词的个数,后面一个是词向量维度。如输出所示这样我们就构建一个词典大小为6,向量维度为5的向量库。

词典应该怎么构造呢?词典应该有词和索引,所以可以用dict来构造:

word_to_index={'中':[0],'国':[1],'我':[2],'的':[3],'母':[4],'亲':[5]}

注意,key是中文字符,value要是list。这个词典大小为6,,那么可以用定义好的embedding来构造词向量:

index=Variable(torch.LongTensor(word_to_index['中']))
print(embeding(index))

输出

tensor([[ 0.8598,  0.3122,  0.8926, -0.9521,  0.1800]])

这就得到‘中’这个字的word vector。

同理sentence vector可以如下表示:

index=[word_to_index['中'],word_to_index['国'],word_to_index['我'],word_to_index['的'],word_to_index['母'],word_to_index['亲']]
index=Variable(torch.LongTensor(index))
print(embeding(index))

输出

tensor([[[-0.2161,  0.2320,  0.2735, -0.1969, -0.7603]],

        [[ 1.0680,  1.1965,  0.6511,  1.4256, -0.7490]],

        [[ 0.3841, -0.5595, -0.9003, -1.2678, -1.4317]],

        [[ 1.2867,  0.0704,  0.4049, -1.6118,  0.7231]],

        [[-0.8996,  0.3947,  0.3799,  0.1408, -0.3430]],

        [[ 2.0890,  0.6255,  0.7351, -0.4562, -1.0978]]])

可见embedding的原理就是随机生成词向量给每个词。

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>好的,我现在需要帮助用户在Ubuntu系统上安装与embedding相关的工具或库。首先,用户的问题比较宽泛,我需要明确他们具体需要什么样的工具或库。因为embedding相关的工具有很多种,比如自然语言处理中的词嵌入库(如Gensim、FastText)、深度学习框架中的嵌入层(如TensorFlow、PyTorch),或者是一些专门的嵌入模型(如Sentence Transformers、BERT等)。另外,用户可能还涉及到本地部署的大模型,比如参考引用中的RagFlow和Deepseek-r1,这些可能需要特定的环境配置。 首先,我需要回顾用户提供的引用内容,看看是否有相关的安装步骤可以参考。引用[2]提到在Docker中安装Miniconda,并配置环境,这可能适用于需要Python环境的情况。引用[3]和[4]提到了Ubuntu下部署RagFlow和Deepseek-r1,可能需要安装Ollama、Cherry Studio等工具,以及配置本地知识库系统,其中可能涉及embedding模型的调整,比如更换BAAI/bge-large-en-v1.5这样的模型。 接下来,我应该分步骤来回答用户的问题。首先,安装Python环境,因为大多数embedding工具都是基于Python的。然后,安装常用的embedding库,比如Gensim、Sentence Transformers、Hugging Face Transformers等。此外,可能需要安装深度学习框架如TensorFlow或PyTorch。用户如果需要进行本地私有化部署,可能还需要使用Docker和Conda来管理环境,如引用[2]所述。 另外,用户提到参考[4]中调整文本切分参数和更换embedding模型,可能需要安装特定的模型库,比如sentence-transformers来加载预训练模型。同时,安装ollama等工具来支持本地大模型的运行,如引用[3]和[4]中的部署步骤。 需要注意的潜在问题包括依赖项安装、CUDA驱动的兼容性(如果使用GPU加速)、以及不同库之间的版本冲突。用户可能需要使用虚拟环境(如Conda或venv)来隔离不同项目的依赖。 最后,生成相关问题,帮助用户进一步探索,比如如何优化embedding模型性能,如何集成到应用中,或者如何调整参数提升效果等。</think>### 分步指南:在 Ubuntu 上安装 Embedding 相关工具/库 #### 一、基础环境配置 1. **更新软件源** ```bash sudo apt-get update && sudo apt-get upgrade -y ``` 2. **安装 Python 开发环境** ```bash sudo apt-get install python3 python3-pip python3-venv ``` 3. **安装 CUDA 驱动(GPU加速可选)** ```bash sudo apt-get install nvidia-driver-535 nvidia-cuda-toolkit # 版本根据显卡型号调整 ``` #### 二、核心工具安装 1. **使用 Conda 管理环境(推荐)** ```bash wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh # 按提示完成安装[^2] ``` 2. **创建虚拟环境** ```bash conda create -n embedding_env python=3.9 conda activate embedding_env ``` #### 三、安装 Embedding 库 | 库名称 | 安装命令 | 典型应用场景 | |---------------------|-----------------------------------|---------------------------| | sentence-transformers | `pip install sentence-transformers` | 文本相似度计算 | | gensim | `pip install gensim` | Word2Vec/GloVe 实现 | | transformers | `pip install transformers` | BERT/RoBERTa 等预训练模型 | | faiss-cpu | `pip install faiss-cpu` | 向量相似度搜索 | #### 四、高级部署方案 1. **本地大模型部署(参考引用[3][4])** ```bash # 安装 Ollama 框架 curl -fsSL https://ollama.com/install.sh | sh # 拉取 embedding 模型 ollama pull bge-large-en-v1.5 # BAAI 的英文 embedding 模型[^4] ``` 2. **Docker 部署(参考引用[2])** ```bash docker pull nvidia/cuda:11.8.0-base-ubuntu22.04 docker run --gpus all -it --name embedding_container nvidia/cuda:11.8.0-base-ubuntu22.04 ``` #### 五、验证安装 ```python from sentence_transformers import SentenceTransformer model = SentenceTransformer('BAAI/bge-large-en-v1.5') embeddings = model.encode("Hello Ubuntu!") print(embeddings.shape) # 应输出 (1024,) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值