詞嵌入nn.embedding的解釋

一、embedding如何處理文本

在NLP任務中,首先要對文本進行處理,將文本進行編碼轉換,形成向量表達,embedding處理文本的流程如下:

(1)輸入一段文本,中文會先分詞(如jieba分詞),英文會按照空格提取詞

(2)首先將單詞轉成字典的形式,由于英語中以空格為詞的分割,所以可以直接建立詞典索引結構。類似于:word2id = {‘i’ : 1, ‘like’ : 2, ‘you’ : 3, ‘want’ : 4, ‘an’ : 5, ‘apple’ : 6} 這樣的形式。如果是中文的話,首先進行分詞操作。

(3)然后再以句子為list,為每個句子建立索引結構,list [ [ sentence1 ] , [ sentence2 ] ] 。以上面字典的索引來說,最終建立的就是 [ [ 1 , 2 , 3 ] , [ 1 , 4 , 5 , 6 ] ] 。這樣長短不一的句子

(4)接下來要進行padding的操作。由于tensor結構中都是等長的,所以要對上面那樣的句子做padding操作后再利用 nn.Embedding 來進行詞的初始化。padding后的可能是這樣的結構

[ [ 1 , 2 , 3, 0 ] , [ 1 , 4 , 5 , 6 ] ] 。其中0作為填充。(注意:由于在NMT任務中肯定存在著填充問題,所以在embedding時一定存在著第三個參數,讓某些索引下的值為0,代表無實際意義的填充)

二、embedding使用示例

比如有兩個句子:

I want a plane
I want to travel to Beijing

將兩個句子轉化為ID映射:

{I:1,want:2,a:3,plane:4,to:5,travel:6,Beijing:7}
轉化成ID表示的兩個句子如下:

1,2,3,4
1,2,5,6,5,7

import torch
from torch import nnif __name__ == "__main__":# 將第一個句子填充0,與第二個句子長度對齊# data.shape = (2, 6)# one-hot data = 2 * 6 * 10data = [[1, 2, 3, 4, 0, 0], [1, 2, 5, 6, 5, 7]]in_vector = torch.LongTensor(data)# 創建字典,最大詞個數為10,每個詞用維度為4表示embedding = nn.Embedding(10, 4)out_emb = embedding(in_vector)print("in_vector.shape:",in_vector.shape)print("embedding.weight.shape:",embedding.weight.shape)print("out_emb.shape:",out_emb.shape)print("out_emb:",out_emb)print("embedding.weight:",embedding.weight)

輸出結果:

in_vector.shape: torch.Size([2, 6])
embedding.weight.shape: torch.Size([10, 4])
out_emb.shape: torch.Size([2, 6, 4])
out_emb: tensor([[[ 0.3840,  1.8390, -0.4930,  1.9279],[-0.8952,  0.1091, -0.2830,  0.4099],[-0.5144, -1.7991,  0.6782, -0.5414],[ 0.7053, -0.8193,  1.1752, -0.7090],[ 0.8880,  0.3052,  1.3366, -0.9206],[ 0.8880,  0.3052,  1.3366, -0.9206]],[[ 0.3840,  1.8390, -0.4930,  1.9279],[-0.8952,  0.1091, -0.2830,  0.4099],[-1.1050,  0.4040, -0.7571,  0.8230],[-0.4365, -0.9059, -3.7702, -0.0430],[-1.1050,  0.4040, -0.7571,  0.8230],[ 0.2677, -1.5236,  0.3324, -1.9825]]], grad_fn=<EmbeddingBackward0>)
embedding.weight: Parameter containing:
tensor([[ 0.8880,  0.3052,  1.3366, -0.9206],[ 0.3840,  1.8390, -0.4930,  1.9279],[-0.8952,  0.1091, -0.2830,  0.4099],[-0.5144, -1.7991,  0.6782, -0.5414],[ 0.7053, -0.8193,  1.1752, -0.7090],[-1.1050,  0.4040, -0.7571,  0.8230],[-0.4365, -0.9059, -3.7702, -0.0430],[ 0.2677, -1.5236,  0.3324, -1.9825],[-0.8469, -1.0805,  1.0592, -0.5903],[ 1.0013, -1.6504, -1.7999, -0.8189]], requires_grad=True)

如果使用one-hot編碼,輸入的向量維度為(2,6,10)
如果使用embedding,輸入的向量維度為(2,6,4)維度大幅降低
nn.Embedding相當于是一本詞典,本例中,詞典中一共有10個詞,每個詞的嵌入維度為4。

鏈接:
1.https://blog.csdn.net/qq_41477675/article/details/114645012
2.https://blog.csdn.net/qq_43426908/article/details/133046902?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-133046902-blog-132993128.235v43pc_blog_bottom_relevance_base7&spm=1001.2101.3001.4242.1&utm_relevant_index=3
3.https://zhuanlan.zhihu.com/p/164502624

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18340.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python雙色球選號程序的實現與解析

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、引言&#xff1a;雙色球選號游戲的魅力 二、程序設計與實現 1. 生成紅色球號碼 2. 生…

3.游戲中自定義數據類型的解讀分析

知識來源于騰訊課堂易道云 結構的解釋&#xff1a; 計算機里的所有東西都是用二進制表示的&#xff0c;二進制是數字&#xff0c;我們用的阿拉伯數字0-9這個數字是十進制&#xff0c;計算機用的是二進制只有0或1&#xff0c;然后都是一堆0或1的數字&#xff0c;游戲中怎么把這…

AD使用問題

設計流程&#xff1a; 1.先創建項目——添加原理圖&#xff0c;原理圖庫&#xff0c;PCB&#xff0c;PCB庫 2.畫原理圖庫和封裝庫 主要有三種方法&#xff1a; &#xff08;1&#xff09;手動畫庫和封裝&#xff0c;常常用于嘉立創查詢不到的器件 &#xff08;2&#xff0…

雙機多網口配置同網段地址,可以通過目的IP確定接收數據的網卡嗎?

環境 兩臺機器兩網卡同網段接入同一個二層交換機。 機器A ens38 00:0c:29:a4:8b:fb 10.0.0.11/24 ens39 00:0c:29:a4:8b:05 10.0.0.12/24 機器B ens38 00:0c:29:4f:a6:c4 10.0.0.21/24 ens39 00:0c:29:4f:a6:ce 10.0.0.22/24 初始ARP表 只有管理口接口的ARP表項&#xff0c…

浙江大學數據結構MOOC-課后習題-第十講-排序4 統計工齡

題目匯總 浙江大學數據結構MOOC-課后習題-拼題A-代碼分享-2024 題目描述 測試點 思路分析 這道題很明顯就是利用桶排序的思路 受到課程內容的影響&#xff0c;我一開始是想著建立一個鏈表數組&#xff0c;數組內每個元素下方都存放鏈表&#xff0c;最后再遍歷統計輸出。 但是&…

【華為OD機試-C卷D卷-200分】反射計數(C++/Java/Python)

【華為OD機試】-(A卷+B卷+C卷+D卷)-2024真題合集目錄 【華為OD機試】-(C卷+D卷)-2024最新真題目錄 題目描述 給定一個包含 0 和 1 的二維矩陣。 給定一個初始位置和速度,一個物體從給定的初始位置出發,在給定的速度下進行移動,遇到矩陣的邊緣則發生鏡面發射。 無論物體…

算法訓練營第四十二天 | LeetCode 42 不同路徑、LeetCode 63 不同路徑 II

LeetCode 62 不同路徑 這題首先確定下dp數組下標和含義。主要有兩種方式&#xff0c;一種是按照位置在數組中下標直接確定&#xff0c;另一種是依據遞推時邊上的位置需要再往上和往左遞推時會出界&#xff0c;將位置設為序號而非下標。這一題第二種方式會比較好一些。遞推邏輯也…

Android和flutter交互,maven庫的形式導入aar包

記錄遇到的問題&#xff0c;在網上找了很多資料&#xff0c;都是太泛泛了&#xff0c;使用后&#xff0c;還不能生效&#xff0c;缺少詳細的說明&#xff0c;或者關鍵代碼缺失&#xff0c;我遇到的問題用紅色的標注了 導入aar包有兩種模式 1.比較繁瑣的&#xff0c;手動將aar…

The Sandbox DAO:投票決定元宇宙的未來!

賦予用戶治理權&#xff0c;打造由社群運營的開放式數碼國度 隨著The Sandbox DAO的啟動&#xff0c;我們邀請全球社群——這個新數字國度的公民們——提出建議并參與治理&#xff0c;共同塑造開放元宇宙的未來。 介紹 在The Sandbox&#xff0c;我們正在建立一個開放的元宇宙…

聚酯輸送帶的原材料

揭秘聚酯輸送帶原材料&#xff1a;高效耐用背后的秘密武器 在現代化工業生產中&#xff0c;聚酯輸送帶以其出色的耐用性和穩定性&#xff0c;成為眾多行業不可或缺的傳輸工具。然而&#xff0c;你是否好奇&#xff0c;究竟是什么原材料賦予了聚酯輸送帶如此卓越的性能&#xf…

opencv c++編程基礎

1、圖片的本質 圖像在 OpenCV 中的本質 在 OpenCV 中&#xff0c;圖像被表示為一個多維數組&#xff0c;其中每個元素對應于圖像中的單個像素。圖像的維度取決于其通道數和像素數。 **通道數&#xff1a;**圖像可以有多個通道&#xff0c;每個通道存儲圖像的不同信息。例如&…

一維掃描線,有多少對相交線段

D - Intersecting Intervals 目錄 正向&#xff1a; 反向&#xff1a; 正向&#xff1a; 從左往右掃描&#xff0c;記錄當前邊數。 來了新邊&#xff0c;它此刻與當前邊數相交&#xff0c;加到總數中。邊結束&#xff0c;當前邊數中減去即可。 const int maxn 5e55; int …

Uniapp橫豎屏切換讓某一個頁面只能橫屏或者豎屏

先看官方屬性 plus.screen.lockOrientation(default); // 默認橫豎屏切換 plus.screen.lockOrientation(portrait-primary);// 豎屏展示 plus.screen.lockOrientation(landscape-primary); // 強制橫屏簡單需求&#xff1a;允許橫豎屏切換 在 page.json增加以下代碼 "gl…

李廉洋:5.22黃金原油高位震蕩,今日最新行情分析策略。

黃金消息面分析&#xff1a;根據4月份的通脹數據&#xff0c;加拿大央行6月5日降息應該是“理所當然的”。加拿大的整體通貨膨脹率在4月份降至2.7%&#xff0c;為自2021年初以來的最低水平&#xff0c;核心CPI中加拿大央行的兩項首選數據均降至3%以下。加拿大央行在決定降息之前…

鴻蒙學習第一課--認識目錄結構

項目結構介紹 module.json5 src > main > module.json5&#xff1a;Stage模型模塊配置文件。主要包含HAP包的配置信息、應用/服務在具體設備上的配置信息以及應用/服務的全局配置信息。具體的配置文件說明&#xff0c;詳見module.json5配置文件。 資源分類和訪問 關于s…

vue使用asiox 下載后端返回的excel數據流

一、前端代碼 <template><div class"hello"><h1>{{ msg }}</h1><button style"color: brown" click"exportExcel">excel導出</button></div> </template><script> import axios from &q…

awk編輯器

目錄 工作原理 命令格式 普通格式 BEGIN格式 語句循環格式 awk常見的內建變量&#xff08;可直接用&#xff09; 按行打印行內容 統計行數量 按字段輸出文本 通過管道、雙引號調用 Shell 命令 awk編輯器是一種流編輯器 工作原理 逐行讀取文本,默認以空格或tab鍵為分…

二叉樹,先序遍歷、中序遍歷、后序遍歷和層序遍歷實現 C++

二叉樹基類聲明 template<typename T>class Tree{protected:Tree() default;virtual ~Tree() default;virtual const Tree& root()const 0;virtual Tree& root() 0;virtual const Tree& left()const 0;virtual const Tree& right()const 0;virtua…

java第十八課 —— 重載、可變參數

方法重載 基本介紹 java 中允許同一個類中&#xff0c;多個同名方法的存在&#xff0c;但要求形參列表不一致&#xff01; 比如&#xff1a;System.out.println(); out 是 PrintStream 類型 重載的好處 減輕了起名的麻煩減輕了記名的麻煩 注意事項和使用細節 方法名&…

【Vue】Vue2中的Vuex

目錄 Vuex介紹Vuex 中的核心概念 在vue2中使用Vuex安裝 Vuex創建一個 Vuex Store在 Vue 實例中使用 Vuex編寫 Vuex 的 state、mutations 和 actions在組件中使用 Vuex Vuex的核心State組件中獲取 Vuex 的狀態mapState 輔助函數對象展開運算符 Getter基本使用示例 通過屬性訪問通…