快捷方式

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)[源]

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 层的前馈网络的隐藏层维度。

  • num_layers (int) – 要实例化的 Emformer 层数。

  • segment_length (int) – 每个输入段的长度。

  • dropout (float, 可选) – dropout 概率。 (默认: 0.0)

  • activation (str, 可选) – 在每个 Emformer 层的馈送网络中使用的激活函数。必须是 (“relu”, “gelu”, “silu”) 之一。 (默认: “relu”)

  • left_context_length (int, 可选) – 左上下文长度。 (默认: 0)

  • right_context_length (int, 可选) – 右上下文长度。 (默认: 0)

  • max_memory_size (int, 可选) – 要使用的最大内存元素数。 (默认: 0)

  • weight_init_scale_strategy (strNone, 可选) – 每层权重初始化缩放策略。必须是 (“depthwise”, “constant”, None) 之一。 (默认: “depthwise”)

  • tanh_on_mem (bool, 可选) – 如果为 True,则将 tanh 应用于内存元素。 (默认: False)

  • negative_inf (float, 可选) – 在注意力权重中用于负无穷大的值。 (默认: -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: batch size; T: batch 中输入帧的最大数量; D: 每帧的特征维度。

参数
  • input (torch.Tensor) – 语句帧,用右侧上下文帧进行右填充,形状为 (B, T + right_context_length, D)

  • lengths (torch.Tensor) – 形状为 (B,),第 i 个元素表示 input 中第 i 个批次元素的有效语句帧数。

返回

张量

输出帧,形状为 (B, T, D)

张量

输出长度,形状为 (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: batch size; D: 每帧的特征维度。

参数
  • input (torch.Tensor) – 语句帧,用右侧上下文帧进行右填充,形状为 (B, segment_length + right_context_length, D)

  • lengths (torch.Tensor) – 形状为 (B,),第 i 个元素表示 input 中第 i 个批次元素的有效帧数。

  • states (List[List[torch.Tensor]] or None, 可选) – 张量列表的列表,表示先前调用 infer 时生成的内部状态。 (默认: None)

返回

张量

输出帧,形状为 (B, segment_length, D)

张量

输出长度,形状为 (B,),其中第 i 个元素表示输出帧中第 i 个批次元素的有效帧数。

List[List[Tensor]]

输出状态;张量列表的列表,表示当前调用 infer 时生成的内部状态。

返回类型

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

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源