基于RNN和Transformer的詞級語言建模 代碼分析 _generate_square_subsequent_mask

基于RNN和Transformer的詞級語言建模 代碼分析 _generate_square_subsequent_mask

flyfish

Word-level Language Modeling using RNN and Transformer

word_language_model

PyTorch 提供的 word_language_model 示例展示了如何使用循環神經網絡RNN(GRU或LSTM)和 Transformer 模型進行詞級語言建模 。默認情況下,訓練使用Wikitext-2數據集,generate.py可以使用訓練好的模型來生成新文本。

源碼地址
https://github.com/pytorch/examples/tree/main/word_language_model

文件:model.py

import torch
import matplotlib.pyplot as plt
import numpy as npdef _generate_square_subsequent_mask(sz):return torch.log(torch.tril(torch.ones(sz, sz)))# 設置矩陣大小
sz = 5
mask = _generate_square_subsequent_mask(sz)# 將 mask 轉換為 numpy 數組,方便可視化
mask_np = mask.numpy()# 可視化
plt.imshow(mask_np, cmap='viridis')
plt.colorbar()
plt.title("Square Subsequent Mask")
plt.show()

可視化圖示
在可視化結果中,你會看到一個下三角矩陣,其值為 0 的部分為下三角部分,值為負無窮的部分為上三角部分。圖像中通常負無窮會被顯示為一種不同的顏色。

這樣,你可以直觀地理解生成的掩碼矩陣的結構和作用。這個掩碼矩陣主要用于 Transformer 模型中,以確保模型在預測時只能看到當前時刻及之前的時刻信息,而不能看到未來的信息。
在這里插入圖片描述
結果
運行這段代碼,你會看到一個 5x5 的矩陣,其中下三角部分是 0(因為 log(1) = 0),上三角部分是負無窮(由于 log(0) 是負無窮)。

def _generate_square_subsequent_mask(sz):return torch.log(torch.tril(torch.ones(sz, sz)))
# 設置矩陣大小
sz = 5
mask = _generate_square_subsequent_mask(sz)# 打印矩陣
print(mask)

輸出

tensor([[0., -inf, -inf, -inf, -inf],[0., 0., -inf, -inf, -inf],[0., 0., 0., -inf, -inf],[0., 0., 0., 0., -inf],[0., 0., 0., 0., 0.]])

在數學上,定義對數函數時,log(0) 是未定義的,但在計算中,我們處理這種情況的方式是認為 log(0) 的極限值是負無窮。因此,計算機通常會返回負無窮來表示這種情況。

在 PyTorch 中,torch.log(0) 的結果是 -inf(負無窮)。這是因為對數函數是單調遞增的,并且在接近0時值會急劇下降到負無窮。

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

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

相關文章

汽車IVI中控開發入門及進階(二十二):video decoder視頻解碼芯片

前言: 視頻解碼器在許多汽車、專業和消費視頻應用中仍有需求。Analog Devices是模擬視頻產品領域的行業領導者,提供一系列視頻解碼器,可將標準(SD,standard definition)和高清(HD,High definition)分辨率的模擬視頻高質量轉換為MIPI或TTL格式的數字視頻數據。典型的應…

【AI大模型】如何讓大模型變得更聰明?基于時代背景的思考

【AI大模型】如何讓大模型變得更聰明 前言 在以前,AI和大模型實際上界限較為清晰。但是隨著人工智能技術的不斷發展,基于大規模預訓練模型的應用在基于AI人工智能的技術支持和幫助上,多個領域展現出了前所未有的能力。無論是自然語言處理、…

算法刷題筆記 差分矩陣(C++實現)

文章目錄 題目前言題目描述解題思路和代碼實現 題目前言 這道題是一道差分算法的拓展題型,是算法刷題筆記到目前為止我認為最困難的題目之一。因此,這篇題解博客的過程記錄也最為詳細,希望能夠為你帶來幫助。 題目描述 輸入一個n行m列的整…

JavaScript的垃圾回收機制

No.內容鏈接1Openlayers 【入門教程】 - 【源代碼示例300】 2Leaflet 【入門教程】 - 【源代碼圖文示例 150】 3Cesium 【入門教程】 - 【源代碼圖文示例200】 4MapboxGL【入門教程】 - 【源代碼圖文示例150】 5前端就業寶典 【面試題詳細答案 1000】 文章目錄 一、垃圾…

匹配字符串

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python提供了re模塊,用于實現正則表達式的操作。在實現時,可以使用re模塊提供的方法(如search()、match()、finda…

深入理解Redis:多種操作方式詳解

Redis(Remote Dictionary Server)是一款高性能的開源鍵值存儲系統,廣泛應用于緩存、會話管理、實時分析等領域。它支持多種數據結構,如字符串、哈希、列表、集合和有序集合等,提供了豐富的操作命令。本篇博客將詳細介紹…

信息系統項目管理師0603:項目整合管理 — 考點總結(可直接理解記憶)

點擊查看專欄目錄 文章目錄 項目整合管理 — 考點總結(可直接理解記憶) 輸入、輸出、工具和技術 歷年考題直接考輸入,輸出、工具和技術的有17年11月第34、35,19年5月第34、35,20年11月27、28,21年5月第26,28,21年11月第28,22年5月第25,22年11月第22考題 項目章程是正…

CasaOS玩客云安裝全平臺高速下載器Gopeed并實現遠程訪問

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

BufferQueue 的工作原理

bufferQueue 是 Android 圖形棧中的一個核心組件,它在生產者和消費者之間傳遞緩沖區(buffer)。它通常用于圖形緩沖區管理,特別是在 SurfaceFlinger 和其他圖形相關的組件中。理解 BufferQueue 的工作原理對開發高性能圖形應用和解決圖形渲染問題非常有幫助。 BufferQueue …

基于Python的酒店客房入侵檢測系統的設計與實現

基于Python的酒店客房入侵檢測系統的設計與實現 開發語言:Python 數據庫:MySQL所用到的知識:Django框架工具:pycharm、Navicat、Maven 系統功能實現 酒店客房入侵管理界面 結合上文的結構搭建和用戶需求,酒店客房入侵檢測系統的…

【Unity Shader入門精要 第12章】屏幕后處理效果(一)

1. 原理和過程 屏幕后處理是綁定攝像機的,通過抓取當前攝像機渲染的圖像作為 SrcTextrue,然后按需依次調用處理接口,對 SrcTexture 進行處理,最后將處理完成的 DstTexture 顯示到屏幕上,整個過程的調度通過 C# 腳本完…

使用 C++ 在當前進程中獲取指定模塊的基址

C 實現 , 獲取指定模塊在該進程中的基址 1、流程: 獲取進程的所有模塊信息–>遍歷模塊列表 2、實現: // 我自己定義的 typedef struct moudle_date_ {HANDLE mhandle; // 句柄char mname[64]; // 名稱char* date; // 數據DWORD mdword; // 基址…

【機器學習】Adaboost: 強化弱學習器的自適應提升方法

🌈個人主頁: 鑫寶Code 🔥熱門專欄: 閑話雜談| 炫酷HTML | JavaScript基礎 ?💫個人格言: "如無必要,勿增實體" 文章目錄 Adaboost: 強化弱學習器的自適應提升方法引言Adaboost基礎概念弱學習器與強學習…

存儲器容量小才使用SRAM芯片,容量較大時使用DRAM芯片。為什么?

在計算機系統中,存儲器容量的選擇涉及到多種因素,包括成本、速度和復雜性。SRAM(靜態隨機存取存儲器)和DRAM(動態隨機存取存儲器)是兩種常見的內存類型,它們在設計和應用上有顯著的不同。以下是…

【藍橋杯嵌入式】 第六屆國賽

目錄 題目 配置 注意事項 代碼 - 默寫大師 EEPROM讀寫函數 LED驅動函數 ADC采集 上電初始化 LCD 按鍵 PWM互補輸出 全部代碼 hardware.c hardware.h control.c control.h main.c 題目 配置 注意事項 復制LCD的工程,先配置資源 --- 勾選完選項一…

CCIG 2024:合合信息文檔解析技術突破與應用前景

目錄 背景當前大模型訓練和應用面臨的問題訓練Token耗盡訓練語料質量要求高LLM文檔問答應用中文檔解析不精準 合合信息的文檔解析技術1. 具備多文檔元素識別能力2. 具備版面分析能力3. 高性能的文檔解析4. 高精準、高效率的文檔解析文檔多板式部分示例 文檔解析典型技術難點元素…

【代碼隨想錄Day23】|669.修建二叉搜索樹、108.將有序數組轉換為二叉搜索樹、538.把二叉搜索樹轉換為累加樹

669. 修剪二叉搜索樹 這題最開始的想法是復用刪除節點的那題的思路做,需要修改的部分就是要讓程序刪除完一個點后繼續遍歷,因為后續可能還有不符合條件的節點。但這樣想也做復雜了。 這類題其實不用想用什么序遍歷,用哪種方式只是為了更好的…

案例|開發一個美業小程序,都有什么功能

隨著移動互聯網的迅猛發展,美業連鎖機構紛紛尋求數字化轉型,以小程序為載體,提升服務效率,增強客戶體驗。 線下店現在面臨的困境: 客戶到店排隊時間過長,體驗感受差 新客引流難,老用戶回頭客…

基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發(MPLAB+ADC)

目錄 項目介紹硬件介紹項目設計開發環境及工程參考總體流程圖硬件基本配置光照傳感器讀取定時器檢測邏輯 功能展示項目總結 👉 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指數量檢測功能開發 👉 Github: EmbeddedCamerata/PIC-IOT_finger_recognition 項…

Flutter基礎 -- Dart 語言 -- 注釋函數表達式

目錄 1. 注釋 1.1 單行注釋 1.2 多行注釋 1.3 文檔注釋 2. 函數 2.1 定義 2.2 可選參數 2.3 可選參數 默認值 2.4 命名參數 默認值 2.5 函數內定義 2.6 Funcation 返回函數對象 2.7 匿名函數 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算術操作符 3.3 相等相關的…