小白的進階之路系列之十六----人工智能從初步到精通pytorch綜合運用的講解第九部分

從零開始學習NLP

在這個由三部分組成的系列中,你將構建并訓練一個基本的字符級循環神經網絡 (RNN) 來對單詞進行分類。

你將學習

  • 如何從零開始構建循環神經網絡
  • NLP 的基本數據處理技術
  • 如何訓練 RNN 以識別單詞的語言來源。

從零開始學自然語言處理:使用字符級 RNN 對名字進行分類

我們將構建并訓練一個基本的字符級循環神經網絡 (RNN) 來對單詞進行分類。展示了如何預處理數據以建模 NLP。特別是,這些教程展示了如何以低層次處理數據來建模 NLP。

字符級 RNN 將單詞讀取為一系列字符 - 在每個步驟輸出一個預測和“隱藏狀態”,并將其先前的隱藏狀態饋送到下一個步驟中。我們將最終預測作為輸出,即單詞所屬的類別。

具體來說,我們將訓練數據集包含來自 18 種語言的數千個姓氏,并根據拼寫預測名字來自哪種語言。

準備 Torch

設置 torch,使其默認使用正確的設備,并根據您的硬件(CPU 或 CUDA)使用 GPU 加速。

import torch# Check if CUDA is available
device = torch.device('cpu')
if torch.cuda.is_available():device = torch.device('cuda')torch.set_default_device(device)
print(f"Using device = {torch.get_default_device()}")

輸出:

Using device = cuda:0

準備數據

從此處下載數據并將其解壓到當前目錄。

data/names 目錄中包含 18 個文本文件,文件名格式為 [Language].txt。每個文件包含許多名字,每行一個,大部分已羅馬化(但我們仍然需要從 Unicode 轉換為 ASCII)。

第一步是定義和清理我們的數據。首先,我們需要將 Unicode 轉換為純 ASCII 以限制 RNN 輸入層。這通過將 Unicode 字符串轉換為 ASCII 并只允許一小部分允許的字符來實現。

import string
import unicodedata# We can use "_" to represent an out-of-vocabulary character, that is, any character we are not handling in our model
allowed_characters = string.ascii_letters + " .,;'" + "_"
n_letters = len(allowed_characters)# Turn a Unicode string to plain ASCII, thanks to https://stackoverflow.com/a/518232/2809427
def unicodeToAscii(s):return ''.join(c for c in unicodedata.normalize('NFD', s)if unicodedata.category(c) != 'Mn'and c in allowed_characters)

這是一個將 Unicode 字母名字轉換為純 ASCII 的示例。這簡化了輸入層

print (f"converting '?lusàrski' to {unicodeToAscii('?lusàrski')}")

輸出:

converting '?lusàrski' to Slusarski

將名字轉換為張量(Tensors)

現在我們已經組織好所有名字,我們需要將它們轉換為張量才能使用它們。

為了表示單個字母,我們使用大小為 <1 x n_letters> 的“one-hot 向量”。one-hot 向量除了當前字母索引處為 1 外,其余均為 0,例如 "b" = <0 1 0 0 0 ...>

為了構成一個單詞,我們將這些向量連接成一個 2D 矩陣 <line_length x 1 x n_letters>

額外的維度 1 是因為 PyTorch 假定所有內容都是批量的 - 我們這里僅使用批量大小為 1。

# Find letter index from all_letters, e.g. "a" = 0
def letterToIndex(letter):# return our out-of-vocabulary character if we encounter a letter unknown to our modelif letter not in allowed_characters:return allowed_characters.find("_")else:return allowed_characters.find(letter)# Turn a line into a <line_length x 1 x n_letters>,
# or an array of one-hot letter vectors
def lineToTensor(line):tensor = torch.zeros(len(line), 1, n_letters)for li, letter in enumerate(line):tensor[li][0][letterToIndex(letter)] = 1return tensor

這里有一些如何對單個字符或多個字符字符串使用 lineToTensor() 的示例。

print (f"The letter 'a' becomes {lineToTensor('a')}") #notice that the first position in the tensor = 1
print (f"The name 'Ahn' becomes {lineToTensor('Ahn')}") #notice '

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

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

相關文章

MySQL在ubuntu下的安裝

前言&#xff1a; 安裝與卸載中&#xff0c;用戶全部進行切換為root ,一旦安裝&#xff0c;普通用戶也是可以進行使用 初期聯系mysql時不進行用戶的管理&#xff0c;直接使用root 進行即可&#xff0c;盡快適應mysql語句&#xff0c;后面進行學了用戶管理再考慮新建普通用戶。&…

低代碼技術實戰:從 0 到 1 構建高效業務流程應用

引言 在當今競爭激烈的商業環境中&#xff0c;企業迫切需要簡化運營并提高效率。低代碼技術作為一種新興的解決方案&#xff0c;正逐漸成為企業實現這一目標的有力工具。它能夠將繁瑣的手工業務流程轉化為數字資產和應用程序&#xff0c;為企業帶來諸多優勢。本文將詳細介紹低…

RPGMZ游戲引擎 如何手動控制文字顯示速度

直接上代碼 const _Window_Base_prototype_initialize Window_Base.prototype.initialize;Window_Base.prototype.initialize function(rect) {_Window_Base_prototype_initialize.call(this, rect);this.文字速度緩沖 0;}; this.文字速度緩沖 0; 進行緩沖 Window_Base…

Leetcode-1750. 刪除字符串兩端相同字符后的最短長度

Problem: 1750. 刪除字符串兩端相同字符后的最短長度1750. 刪除字符串兩端相同字符后的最短長度 1750. 刪除字符串兩端相同字符后的最短長度 思路 雙指針遍歷 解題過程 模擬題目描述的過程&#xff0c;使用指針 l, r 指向首尾兩端。 如果相同就向中心移動。為了盡可能的刪除多…

【mysql】通過information_schema.tables查詢表的統計信息

1 查詢表的統計信息 information_schema.tables 是 MySQL 中的一個系統視圖&#xff0c;包含數據庫中所有表的信息。 如何查詢當前數據庫的所有表信息&#xff1a; SELECT * FROM information_schema.tables WHERE table_schema DATABASE(); 返回的字段有&#xff1a; 字段名…

“地標界愛馬仕”再啟:世酒中菜聯袂陳匯堂共筑新會陳皮頂奢產業

“地標界愛馬仕”再啟戰略新篇&#xff1a;世酒中菜聯袂陳匯堂&#xff0c;共筑新會陳皮頂奢產業生態 ——中世國際與陳匯堂股權合作簽約儀式在國際地理標志服務基地舉行 江門市新會區&#xff0c;2025年6月20日——被譽為“地標界愛馬仕”的全球頂奢品牌運營商世酒中菜 &…

倒計時 效果

實現HTML <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>信質集團SAP/ERP切換倒計時</title…

高性能群集部署技術-Nginx+Tomcat負載均衡群集

目錄 #1.1案例概述 1.1.1案例前置知識點 1.1.2案例環境 #2.1案例實施 2.1.1實施準備 2.1.2查看JDK是否安裝 2.1.3安裝配置Tomcat 2.1.4Tomcat主配置文件說明 2.1.5建立Java的Web站點 #3.1NginxTomcat負載均衡&#xff0c;動靜分離群集的實驗案例 3.1.1案例概述 3.1.2案例環境…

《Go語言圣經》函數值、匿名函數遞歸與可變參數

《Go語言圣經》函數值、匿名函數遞歸與可變參數 函數值&#xff08;Function Values&#xff09; 在 Go 語言中&#xff0c;函數被視為第一類值&#xff08;first-class values&#xff09;&#xff0c;這意味著它們可以像其他值一樣被操作&#xff1a;擁有類型、賦值給變量、…

vtk和opencv和opengl直接的區別是什么?

簡介 VTK、OpenCV 和 OpenGL 是三個在計算機圖形學、圖像處理和可視化領域廣泛使用的工具庫&#xff0c;但它們在功能、應用場景和底層技術上存在顯著差異。以下是它們的核心區別和特點對比&#xff1a; 1. 核心功能與定位 工具核心功能主要應用領域VTK (Visualization Toolk…

最新豆包大模型發布!火山引擎推出Agent開發新范式

Datawhale大會 2025火山引擎 Force 原動力大會 6月11日-12日&#xff0c;北京國家會議中心人山人海&#xff0c;2025 火山引擎 Force 原動力大會如約而至。 作為開發者社區的一員&#xff0c;這場大會上的一系列新發布讓我們感受到了&#xff1a;這個 Agent 技術落地元年的關鍵…

RFC4291-IPv6地址架構解說

RFC 4291 是由互聯網工程任務組&#xff08;IETF&#xff09;發布的關于 IPv6 地址架構 的標準文檔。 該文檔詳細定義了 IPv6 地址的格式、類型、表示方法以及分配方式。 以下是對 RFC 4291 中 IPv6 地址架構的全面解析&#xff0c;包括地址格式、類型、表示方法、特殊地址以…

簡單對比 **HTTP**、**MQTT** 和 **CoAP** 這三種通信協議

對比 HTTP、MQTT 和 CoAP 這三種通信協議&#xff0c;從 消息結構、資源占用、安全性 等方面進行全面分析。 &#x1f310; HTTP vs MQTT vs CoAP 對比 特性HTTPMQTTCoAP協議層級應用層基于 TCP應用層基于 TCP / WebSocket應用層基于 UDP (也支持 TCP)消息模式請求/響應 (客戶…

【Dify 案例】【自然語言轉SQL案例】【五】【實戰二】【財務管理查詢商品信息數據】

援引實戰一,進行數據業務處理化 1.開始 2.自然語言轉SQL的工具 3.參數提取器 4.SQL查詢

FPGA基礎 -- Verilog語言要素之標識符

一、什么是標識符&#xff08;Identifier&#xff09; 在 Verilog 中&#xff0c;標識符是用戶定義的名字&#xff0c;用于標識模塊、變量、端口、函數、任務、參數、宏定義等各種語言要素。 就像 C 語言的變量名、函數名一樣&#xff0c;Verilog 中的標識符為 HDL 代碼提供了…

Tomcat雙擊startup.bat閃退的解決方法

首先需要確認java環境是否配置正確&#xff0c;jdk是否安裝正確 winR打開cmd&#xff0c;輸入該命令 java -version 出現對應的版本就說明jdk配置正確 如果沒有&#xff0c;則參考jdk的安裝及配置 如果以上都沒有問題&#xff0c;就繼續排查 確認Tomcat的環境變量配置 概…

計算機基礎(三):深入解析Java中的原碼、反碼、補碼

計算機基礎系列文章 計算機基礎(一)&#xff1a;ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析 計算機基礎(二)&#xff1a;輕松理解二進制、八進制、十進制和十六進制 計算機基礎(三)&#xff1a;深入解析Java中的原碼、反碼、補碼 目錄 引言一、 基礎概念&…

phpstudy無法啟動mysql,一啟動就關閉,完美解決

phpstudy無法啟動mysql&#xff0c;一啟動就關閉&#xff0c;完美解決 phpstudy的mysql無法啟動&#xff0c;一啟動就關閉如何解決。 問題出現的原因&#xff1a;phpstudy自帶的mysql&#xff0c;可能與之前單獨安裝的mysql發生沖突。(之前安裝的mysql已經占用3306端口) 解決方…

mysql中的<>和!=

在MySQL中&#xff0c;<> 運算符表示 不等于。它與 ! 運算符功能完全相同&#xff0c;都是用于比較兩個表達式是否不相等。 SELECT * FROM table_name WHERE column_name <> value;當 column_name 的值不等于 value 時&#xff0c;返回該行當值相等或為 NULL 時&a…

C#學習日記

命名空間 知識點一 命名空間基本概念 概念 命名空間是用來組織和重用代碼的 作用 就像是一個工具包&#xff0c;類就像是一件一件的工具&#xff0c;都是申明在命名空間中的 知識點二 命名空間的使用 基本語法 namespace 命名空間名 {類類 } namespace MyGame {class GameO…