18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>PyTorch教程10.6之編碼器-解碼器架構(gòu)

PyTorch教程10.6之編碼器-解碼器架構(gòu)

2023-06-05 | pdf | 0.11 MB | 次下載 | 免費

資料介紹

在一般的 seq2seq 問題中,如機器翻譯(第 10.5 節(jié)),輸入和輸出的長度不同且未對齊。處理這類數(shù)據(jù)的標準方法是設(shè)計一個編碼器-解碼器架構(gòu)(圖 10.6.1),它由兩個主要組件組成:一個 編碼器,它以可變長度序列作為輸入,以及一個 解碼器,作為一個條件語言模型,接收編碼輸入和目標序列的向左上下文,并預(yù)測目標序列中的后續(xù)標記。

../_images/編碼器解碼器.svg

圖 10.6.1編碼器-解碼器架構(gòu)。

讓我們以從英語到法語的機器翻譯為例。給定一個英文輸入序列:“They”、“are”、“watching”、“.”,這種編碼器-解碼器架構(gòu)首先將可變長度輸入編碼為一個狀態(tài),然后對該狀態(tài)進行解碼以生成翻譯后的序列,token通過標記,作為輸出:“Ils”、“regardent”、“.”。由于編碼器-解碼器架構(gòu)構(gòu)成了后續(xù)章節(jié)中不同 seq2seq 模型的基礎(chǔ),因此本節(jié)將此架構(gòu)轉(zhuǎn)換為稍后將實現(xiàn)的接口。

from torch import nn
from d2l import torch as d2l
from mxnet.gluon import nn
from d2l import mxnet as d2l
from flax import linen as nn
from d2l import jax as d2l
No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
import tensorflow as tf
from d2l import tensorflow as d2l

10.6.1。編碼器

在編碼器接口中,我們只是指定編碼器將可變長度序列作為輸入X。實現(xiàn)將由繼承此基類的任何模型提供Encoder。

class Encoder(nn.Module): #@save
  """The base encoder interface for the encoder-decoder architecture."""
  def __init__(self):
    super().__init__()

  # Later there can be additional arguments (e.g., length excluding padding)
  def forward(self, X, *args):
    raise NotImplementedError
class Encoder(nn.Block): #@save
  """The base encoder interface for the encoder-decoder architecture."""
  def __init__(self):
    super().__init__()

  # Later there can be additional arguments (e.g., length excluding padding)
  def forward(self, X, *args):
    raise NotImplementedError
class Encoder(nn.Module): #@save
  """The base encoder interface for the encoder-decoder architecture."""
  def setup(self):
    raise NotImplementedError

  # Later there can be additional arguments (e.g., length excluding padding)
  def __call__(self, X, *args):
    raise NotImplementedError
class Encoder(tf.keras.layers.Layer): #@save
  """The base encoder interface for the encoder-decoder architecture."""
  def __init__(self):
    super().__init__()

  # Later there can be additional arguments (e.g., length excluding padding)
  def call(self, X, *args):
    raise NotImplementedError

10.6.2。解碼器

在下面的解碼器接口中,我們添加了一個額外的init_state 方法來將編碼器輸出 ( enc_all_outputs) 轉(zhuǎn)換為編碼狀態(tài)。請注意,此步驟可能需要額外的輸入,例如輸入的有效長度,這在 第 10.5 節(jié)中有解釋。為了逐個令牌生成可變長度序列令牌,每次解碼器都可以將輸入(例如,在先前時間步生成的令牌)和編碼狀態(tài)映射到當前時間步的輸出令牌。

class Decoder(nn.Module): #@save
  """The base decoder interface for the encoder-decoder architecture."""
  def __init__(self):
    super().__init__()

  # Later there can be additional arguments (e.g., length excluding padding)
  def init_state(self, enc_all_outputs, *args):
    raise NotImplementedError

  def forward(self, X, state):
    raise NotImplementedError
class Decoder(nn.Block): #@save
  """The base decoder interface for the encoder-decoder architecture."""
  def __init__(self):
    super().__init__()

  # Later there can be additional arguments (e.g., length excluding padding)
  def init_state(self, enc_all_outputs, *args):
    raise NotImplementedError

  def forward(self, X, state):
    raise NotImplementedError
class Decoder(nn.Module): #@save
  """The base decoder interface for the encoder-decoder architecture."""
  def setup(self):
    raise NotImplementedError

  # Later there can be additional arguments (e.g., length excluding padding)
  def init_state(self, enc_all_outputs, *args):
    raise NotImplementedError

  def __call__(self, X, state):
    raise NotImplementedError
class Decoder(tf.keras.layers.Layer): #@save
  """The base decoder interface for the encoder-decoder architecture."""
  def __init__(self):
    super().__init__()

  # Later there can be additional arguments (e.g., length excluding padding)
  def init_state(self, enc_all_outputs, *args):
    raise NotImplementedError

  def call(self, X, state):
    raise NotImplementedError

10.6.3。將編碼器和解碼器放在一起

在前向傳播中,編碼器的輸出用于產(chǎn)生編碼狀態(tài),解碼器將進一步使用該狀態(tài)作為其輸入之一。

class EncoderDecoder(d2l.Classifier): #@save
  """The base class for the encoder-decoder architecture."""
  def __init__(self, encoder, decoder):
    super().__init__()
    self.encoder = encoder
    self.decoder = decoder

  def forward(self, enc_X, dec_X, *args):
    enc_all_outputs = self.encoder(enc_X, *args)
    dec_state = self.decoder.init_state(enc_all_outputs, *args)
    # Return decoder output only
    return self.decoder(dec_X, dec_state)[0]
class EncoderDecoder(d2l.Classifier): #@save
  """The base class for the encoder-decoder architecture."""
  def __init__(self, encoder, decoder):
    super().__init__()
    self.encoder = encoder
    self.decoder = decoder

  def forward(self, enc_X, dec_X, *args):
    enc_all_outputs = self.encoder(enc_X, *args)
    dec_state = self.decoder.init_state(enc_all_outputs, *args)
    # Return decoder output only
    return self.decoder(dec_X, dec_state)[0]
class EncoderDecoder(d2l.Classifier): #@save
  """The base class for the encoder-decoder architecture."""
  encoder: nn.Module
  decoder: nn.Module
  training: bool

  def __call__(self, enc_X, dec_X, *args):
    enc_all_outputs = self.encoder(enc_X, *args, training=self.training)
    dec_state = self.decoder.init_state(enc_all_outputs, *args)
    # Return decoder output only
    return self.decoder(dec_X, dec_state, training=self.training)[0]
class EncoderDecoder(d2l.Classifier): #@save
  """The base class for the encoder-decoder architecture."""
  def __init__(self, encoder, decoder):
    super().__init__()
    self.encoder = encoder
    self.decoder = decoder

  def call(self, enc_X, dec_X, *args):
    enc_all_outputs = self.encoder(enc_X, *args, training=True)
    dec_state = self.decoder.init_state(enc_all_outputs, *args)
    # Return decoder output only
    return self.decoder(dec_X, dec_state, training=True)[0]

在下一節(jié)中,我們將看到如何應(yīng)用 RNN 來設(shè)計基于這種編碼器-解碼器架構(gòu)的 seq2seq 模型。

10.6.4。概括

編碼器-解碼器架構(gòu)可以處理由可變長度序列組成的輸入和輸出,因此適用于機器翻譯等 seq2seq 問題。編碼器將可變長度序列作為輸入,并將其轉(zhuǎn)換為具有固定形狀的狀態(tài)。解碼器將固定形狀的編碼狀態(tài)映射到可變長度序列。

10.6.5。練習

  1. 假設(shè)我們使用神經(jīng)網(wǎng)絡(luò)來實現(xiàn)編碼器-解碼器架構(gòu)。編碼器和解碼器必須是同一類型的神經(jīng)網(wǎng)絡(luò)嗎?

  2. 除了機器翻譯,你能想到另一個可以應(yīng)用編碼器-解碼器架構(gòu)的應(yīng)用程序嗎?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊
  2. 0.40 MB   |  4次下載  |  2 積分
  3. 2光伏并網(wǎng)逆變器原理
  4. 7.31 MB   |  3次下載  |  2 積分
  5. 3T20電烙鐵原理圖資料
  6. 0.27 MB   |  2次下載  |  免費
  7. 4PL83081 雙路恒流同步降壓轉(zhuǎn)換器技術(shù)手冊
  8. 3.34 MB   |  1次下載  |  免費
  9. 5PL88052 4.8V至60V輸入,5A,同步降壓轉(zhuǎn)換器技術(shù)手冊
  10. 3.36 MB   |  1次下載  |  免費
  11. 6LX8201微孔霧化驅(qū)動芯片電路圖資料
  12. 0.15 MB   |  1次下載  |  免費
  13. 7PC6200_7V直流電機驅(qū)動器技術(shù)手冊
  14. 0.47 MB   |  次下載  |  免費
  15. 8恒溫晶體振蕩器(OCXO)FOC-2D:20.6×20.6mm在通信基站和測試設(shè)備中的應(yīng)用參數(shù)規(guī)格
  16. 485.75 KB  |  次下載  |  免費

本月

  1. 1如何看懂電子電路圖
  2. 12.88 MB   |  329次下載  |  免費
  3. 2RK3588數(shù)據(jù)手冊
  4. 2.24 MB   |  14次下載  |  免費
  5. 3PC5502負載均流控制電路數(shù)據(jù)手冊
  6. 1.63 MB   |  12次下載  |  免費
  7. 4STM32F10x參考手冊資料
  8. 13.64 MB   |  12次下載  |  1 積分
  9. 5OAH0428 V1.0英文規(guī)格書
  10. 5.86 MB   |  8次下載  |  免費
  11. 6NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊
  12. 0.40 MB   |  4次下載  |  2 積分
  13. 7PID控制算法學習筆記資料
  14. 3.43 MB   |  3次下載  |  2 積分
  15. 8光伏并網(wǎng)逆變器原理
  16. 7.31 MB   |  3次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935132次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191415次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183349次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81599次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73818次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65990次下載  |  10 積分