快捷方式

Emformer

class torchaudio.models.Emformer(input_dim: int, num_heads: int, ffn_dim: int, num_layers: int, segment_length: int, dropout: float = 0.0, activation: str = 'relu', left_context_length: int = 0, right_context_length: int = 0, max_memory_size: int = 0, weight_init_scale_strategy: Optional[str] = 'depthwise', tanh_on_mem: bool = False, negative_inf: float = -100000000.0)[source]

Emformer 架構,首次提出於 Emformer: Efficient Memory Transformer Based Acoustic Model for Low Latency Streaming Speech Recognition [Shi et al., 2021]

另請參閱

引數:
  • input_dim (int) – 輸入維度。

  • num_heads (int) – 每個 Emformer 層的注意力頭數量。

  • ffn_dim (int) – 每個 Emformer 層的 Feedforward 網路隱藏層維度。

  • num_layers (int) – 要例項化的 Emformer 層數量。

  • segment_length (int) – 每個輸入段的長度。

  • dropout (float, optional) – dropout 機率。(預設值:0.0)

  • activation (str, optional) – 每個 Emformer 層的 Feedforward 網路中使用的啟用函式。必須是 (“relu”, “gelu”, “silu”) 之一。(預設值:“relu”)

  • left_context_length (int, optional) – 左上下文長度。(預設值:0)

  • right_context_length (int, optional) – 右上下文長度。(預設值:0)

  • max_memory_size (int, optional) – 要使用的最大記憶體元素數量。(預設值:0)

  • weight_init_scale_strategy (str or None, optional) – 每層權重初始化縮放策略。必須是 (“depthwise”, “constant”, None) 之一。(預設值:“depthwise”)

  • tanh_on_mem (bool, optional) – 如果 True,則對記憶體元素應用 tanh。(預設值:False)

  • negative_inf (float, optional) – 在注意力權重中用於負無窮大的值。(預設值:-1e8)

示例

>>> emformer = Emformer(512, 8, 2048, 20, 4, right_context_length=1)
>>> input = torch.rand(128, 400, 512)  # batch, num_frames, feature_dim
>>> lengths = torch.randint(1, 200, (128,))  # batch
>>> output, lengths = emformer(input, lengths)
>>> input = torch.rand(128, 5, 512)
>>> lengths = torch.ones(128) * 5
>>> output, lengths, states = emformer.infer(input, lengths, None)

方法

forward

Emformer.forward(input: Tensor, lengths: Tensor) Tuple[Tensor, Tensor]

用於訓練和非流式推理的前向傳播。

B: 批次大小;T: 批次中最大輸入幀數;D: 每幀的特徵維度。

引數:
  • input (torch.Tensor) – 經過右上下文幀右填充的 utterance 幀,形狀為 (B, T + right_context_length, D)

  • lengths (torch.Tensor) – 形狀為 (B,),其中第 i 個元素表示 input 中第 i 個批次元素的有效 utterance 幀數量。

返回值:

Tensor

輸出幀,形狀為 (B, T, D)

Tensor

輸出長度,形狀為 (B,),其中第 i 個元素表示輸出幀中第 i 個批次元素的有效幀數量。

返回型別:

(Tensor, Tensor)

infer

Emformer.infer(input: Tensor, lengths: Tensor, states: Optional[List[List[Tensor]]] = None) Tuple[Tensor, Tensor, List[List[Tensor]]]

用於流式推理的前向傳播。

B: 批次大小;D: 每幀的特徵維度。

引數:
  • input (torch.Tensor) – 經過右上下文幀右填充的 utterance 幀,形狀為 (B, segment_length + right_context_length, D)

  • lengths (torch.Tensor) – 形狀為 (B,),其中第 i 個元素表示 input 中第 i 個批次元素的有效幀數量。

  • states (List[List[torch.Tensor]] or None, optional) – 表示在之前呼叫 infer 中生成的內部狀態的張量列表的列表。(預設值:None)

返回值:

Tensor

輸出幀,形狀為 (B, segment_length, D)

Tensor

輸出長度,形狀為 (B,),其中第 i 個元素表示輸出幀中第 i 個批次元素的有效幀數量。

List[List[Tensor]]

輸出狀態;表示在當前呼叫 infer 中生成的內部狀態的張量列表的列表。

返回型別:

(Tensor, Tensor, List[List[Tensor]])

文件

訪問 PyTorch 的完整開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源