【現代深度學習技術】現代循環神經網絡06:編碼器-解碼器架構

在這里插入圖片描述

【作者主頁】Francek Chen
【專欄介紹】 ? ? ?PyTorch深度學習 ? ? ? 深度學習 (DL, Deep Learning) 特指基于深層神經網絡模型和方法的機器學習。它是在統計機器學習、人工神經網絡等算法模型基礎上,結合當代大數據和大算力的發展而發展出來的。深度學習最重要的技術特征是具有自動提取特征的能力。神經網絡算法、算力和數據是開展深度學習的三要素。深度學習在計算機視覺、自然語言處理、多模態數據分析、科學探索等領域都取得了很多成果。本專欄介紹基于PyTorch的深度學習算法實現。
【GitCode】專欄資源保存在我的GitCode倉庫:https://gitcode.com/Morse_Chen/PyTorch_deep_learning。

文章目錄

    • 一、編碼器
    • 二、解碼器
    • 三、合并編碼器和解碼器
    • 小結


??正如我們在機器翻譯與數據集中所討論的,機器翻譯是序列轉換模型的一個核心問題,其輸入和輸出都是長度可變的序列。為了處理這種類型的輸入和輸出,我們可以設計一個包含兩個主要組件的架構:第一個組件是一個編碼器(encoder):它接受一個長度可變的序列作為輸入,并將其轉換為具有固定形狀的編碼狀態。第二個組件是解碼器(decoder):它將固定形狀的編碼狀態映射到長度可變的序列。這被稱為編碼器-解碼器(encoder-decoder)架構,如圖1所示。

在這里插入圖片描述

圖1 編碼器-解碼器架構

??我們以英語到法語的機器翻譯為例:給定一個英文的輸入序列:“They”“are”“watching”“.”。首先,這種“編碼器-解碼器”架構將長度可變的輸入序列編碼成一個“狀態”,然后對該狀態進行解碼,一個詞元接著一個詞元地生成翻譯后的序列作為輸出:“Ils”“regordent”“.”。由于“編碼器-解碼器”架構是形成后續章節中不同序列轉換模型的基礎,因此本節將把這個架構轉換為接口方便后面的代碼實現。

一、編碼器

??在編碼器接口中,我們只指定長度可變的序列作為編碼器的輸入X。任何繼承這個Encoder基類的模型將完成代碼實現。

from torch import nn#@save
class Encoder(nn.Module):"""編碼器-解碼器架構的基本編碼器接口"""def __init__(self, **kwargs):super(Encoder, self).__init__(**kwargs)def forward(self, X, *args):raise NotImplementedError

二、解碼器

??在下面的解碼器接口中,我們新增一個init_state函數,用于將編碼器的輸出(enc_outputs)轉換為編碼后的狀態。注意,此步驟可能需要額外的輸入,例如:輸入序列的有效長度,這在機器翻譯與數據集中進行了解釋。為了逐個地生成長度可變的詞元序列,解碼器在每個時間步都會將輸入(例如:在前一時間步生成的詞元)和編碼后的狀態映射成當前時間步的輸出詞元。

#@save
class Decoder(nn.Module):"""編碼器-解碼器架構的基本解碼器接口"""def __init__(self, **kwargs):super(Decoder, self).__init__(**kwargs)def init_state(self, enc_outputs, *args):raise NotImplementedErrordef forward(self, X, state):raise NotImplementedError

三、合并編碼器和解碼器

??總而言之,“編碼器-解碼器”架構包含了一個編碼器和一個解碼器,并且還擁有可選的額外的參數。在前向傳播中,編碼器的輸出用于生成編碼狀態,這個狀態又被解碼器作為其輸入的一部分。

#@save
class EncoderDecoder(nn.Module):"""編碼器-解碼器架構的基類"""def __init__(self, encoder, decoder, **kwargs):super(EncoderDecoder, self).__init__(**kwargs)self.encoder = encoderself.decoder = decoderdef forward(self, enc_X, dec_X, *args):enc_outputs = self.encoder(enc_X, *args)dec_state = self.decoder.init_state(enc_outputs, *args)return self.decoder(dec_X, dec_state)

??“編碼器-解碼器”體系架構中的術語狀態會啟發人們使用具有狀態的神經網絡來實現該架構。在下一節中,我們將學習如何應用循環神經網絡,來設計基于“編碼器-解碼器”架構的序列轉換模型。

小結

  • “編碼器-解碼器”架構可以將長度可變的序列作為輸入和輸出,因此適用于機器翻譯等序列轉換問題。
  • 編碼器將長度可變的序列作為輸入,并將其轉換為具有固定形狀的編碼狀態。
  • 解碼器將具有固定形狀的編碼狀態映射為長度可變的序列。

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

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

相關文章

宏電全新升級單北斗5G電力DTU,為每一公里電力線路注入可靠連接

在配網自動化改造與數字化轉型的雙重驅動下,宏電股份推出全新升級版H7710-DLWZ系列5G電力DTU,聚焦配網通信鏈路冗余、國產自主可控、復雜環境適應性三大核心需求,為配電自動化、臺區智能運維、分布式能源接入等場景提供高可靠通信底座。 國產…

學習海康VisionMaster之間距檢測

一:進一步學習了 今天學習下VisionMaster中的間距檢測工具:主要類似于卡尺工具,測量物體的長度或者寬度或者間距 二:開始學習 1:什么是間距檢測? 間距測量模塊用于檢測兩特征邊緣之間的間距,首…

藍橋杯 18. 積木

積木 原題目鏈接 題目描述 小明用積木搭了一個城堡。為了方便,小明使用的是大小相同的正方體積木,并將其搭建在一個 n 行 m 列的方格圖上。每個積木占據方格圖中的一個小格子。 小明的城堡是立體的,可以將積木壘在其他積木上。當某個格子…

C++負載均衡遠程調用學習之基礎TCP服務

目錄 1.LARS課程模塊介紹 2.LARS的功能演示機場景作用 3.LARS的reactor框架的組成部分 4.Lars_reactor的項目目錄構建 5.Lars_tcp_server的基礎服務開發 6.Lars_tcp_server的accept實現 7.LarsV0.1總結 1.LARS課程模塊介紹 2.LARS的功能演示機場景作用 # Lars系統開發 …

EasyExcel使用總結

EasyExcel 文章目錄 EasyExcel1、導入1.1、基本方式導入1.導入依賴2. 加載源文件基本語法 3. 讀取數據行4. 讀取結果 1.2、模型映射導入1.定義實體映射類2. 操作讀取基本語法 3. 讀取數據行4. 讀取結果 1.3、導入類型轉換器語法 1.4、導入監聽器基本語法: 1.5、多行…

【愚公系列】《Manus極簡入門》022-藝術創作顧問:“藝術靈感使者”

🌟【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】🌟 📣開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! &#x1f…

藍橋杯15屆國賽 最小字符串

問題描述 給定一個長度為 N 且只包含小寫字母的字符串 S,和 M 個小寫字母 c1,c2,...,cM?。現在你要把 M 個小寫字母全部插入到字符串 S 中,每個小寫字母都可以插入到任意位置。請問能得到的字典序最小的字符串是什么? 輸入格式 第一行包含…

【東楓科技】代理英偉達產品:DPU

NVIDIA BlueField-3 DPU 400Gb/s 基礎設施計算平臺 NVIDIA BlueField -3 數據處理單元 (DPU) 是第三代基礎設施計算平臺,使企業能夠構建從云端到核心數據中心再到邊緣的軟件定義、硬件加速的 IT 基礎設施。借助 400Gb/s 以太網或 NDR 400Gb/s InfiniBand 網絡連接…

依圖科技C++后端開發面試題及參考答案

請介紹你所了解的分布式系統 分布式系統是由多個獨立的計算節點通過網絡連接組成的系統,這些節點共同協作以完成特定的任務。分布式系統的設計目標在于提升系統的性能、可擴展性、可靠性和容錯性。 從性能方面來看,分布式系統能夠把任務分配到多個節點…

Python cv2濾波與模糊處理:從原理到實戰

在圖像處理領域,濾波與模糊是預處理階段的兩大核心操作,既能消除噪聲干擾,又能實現藝術化效果。本文將結合OpenCV的cv2庫,系統講解濾波與模糊的原理及Python實現,帶你從理論到實戰全面掌握這項技術。 一、濾波與模糊的…

在 Laravel 12 中實現 WebSocket 通信時進行身份驗證

在 Laravel 12 中實現 WebSocket 通信時,若需在身份驗證失敗后主動斷開客戶端連接,需結合 頻道認證機制 和 服務端主動斷連操作。以下是具體實現步驟: 一、身份驗證流程設計 WebSocket 連接的身份驗證通常通過 私有頻道(Private …

FPGA----基于ZYNQ 7020實現petalinux并運行一個程序

引言:上一節我們講到了使用Alinx 7020b自帶的sd卡中的petalinux進行epics的編譯,但此種方案個性化程度不足。如:我們項目需要FPGA側的配合,那么我們需要重新編譯petalinx。 注意:本文的知識點來自下面兩篇文章&#x…

Spring Web MVC————入門(1)

今天開始正式帶大家學習Spring部分的內容了,大家嘗試去弄個專業版嗷,學習起來爽一點 在idea中下載這個插件就行了 我們之后開始創建Spring項目, 藍色 部分自己起名,type選Maven,其他的默認就好了,之后nex…

Vue3 中用 canvas 封裝抽獎轉盤組件:設定中獎概率及獎項圖標和名稱

在 Web 應用開發中,抽獎功能是提升用戶參與度的常用手段。使用 Vue3 結合 canvas 技術,我們可以輕松實現一個高度自定義的抽獎轉盤組件,不僅能設定中獎概率,還能靈活配置獎項圖標和名稱。本文將詳細介紹該組件的實現原理、步驟&am…

Linux 硬盤和光驅系統管理

一、硬盤與目錄的容量 [rootwww ~]# df [-ahikHTm] [目錄或檔名] 選項與參數: -a :列出所有的檔案系統,包括系統特有的 /proc 等檔案系統; -k :以 KBytes 的容量顯示各檔案系統; -m :以 MByt…

2.Spring Boot中集成Guava Cache或者Caffeine

一、在Spring Boot(1.x版本)中集成Guava Cache 注意&#xff1a; Spring Boot 2.x用戶&#xff1a;優先使用Caffeine&#xff0c;性能更優且維護活躍。 1. 添加依賴 在pom.xml中添加Guava依賴&#xff1a; <dependency><groupId>com.google.guava</groupId&…

黑馬點評day02(緩存)

2、商戶查詢緩存 2.1 什么是緩存? 前言:什么是緩存? 就像自行車,越野車的避震器 舉個例子:越野車,山地自行車,都擁有"避震器",防止車體加速后因慣性,在酷似"U"字母的地形上飛躍,硬著陸導致的損害,像個彈簧一樣; 同樣,實際開發中,系統也需要"避震…

頭歌禁止復制怎么解除(簡單版)

被頭歌數據庫作業禁止復制整神之后&#xff0c;主啵嘗試網上各種解除方法&#xff0c;最后發現一個最簡單且最快速的解除方法。 在瀏覽器中搜索萬能復制插件 下載完成之后就可以隨便復制粘貼啦 超簡單 下載只需幾秒

【無基礎】小白解決Docker pull時報錯:https://registry-1.docker.io/v2/

Docker Compose 啟動失敗問題解決方案 錯誤描述 執行 docker compose up -d 時出現以下錯誤&#xff1a; [] Running 9/9? api Error context canceled …

【數據結構】二叉樹、堆

文章目錄 二叉樹的概念及結構定義特殊的二叉樹核心性質存儲方式 二叉樹的鏈式存儲前序遍歷中序遍歷后序遍歷層序遍歷 二叉樹的順序存儲父子關系的推導堆&#xff08;heap&#xff09;堆的概念向上調整算法和向下調整算法向上調整算法向下調整算法 堆的創建堆的插入堆的刪除 堆的…