快捷方式

ConvEmformer

class torchaudio.prototype.models.ConvEmformer(input_dim: int, num_heads: int, ffn_dim: int, num_layers: int, segment_length: int, kernel_size: int, dropout: float = 0.0, ffn_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, conv_activation: str = 'silu')[source]

实现了使用非因果卷积的流式 Transformer Transducer 语音识别中介绍的卷积增强流式 Transformer 架构 [Shi et al., 2022]

参数:
  • input_dim (int) – 输入维度。

  • num_heads (int) – 每个 ConvEmformer 层中注意力头的数量。

  • ffn_dim (int) – 每个 ConvEmformer 层的前馈网络的隐藏层维度。

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

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

  • kernel_size (int) – 卷积模块中使用的内核大小。

  • dropout (float, optional) – dropout 概率。(默认值:0.0)

  • ffn_activation (str, optional) – 前馈网络中使用的激活函数。必须是 (“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)

  • conv_activation (str, optional) – 卷积模块中使用的激活函数。必须是 (“relu”, “gelu”, “silu”) 之一。(默认值:“silu”)

示例

>>> conv_emformer = ConvEmformer(80, 4, 1024, 12, 16, 8, right_context_length=4)
>>> input = torch.rand(10, 200, 80)
>>> lengths = torch.randint(1, 200, (10,))
>>> output, lengths = conv_emformer(input, lengths)
>>> input = torch.rand(4, 20, 80)
>>> lengths = torch.ones(4) * 20
>>> output, lengths, states = conv_emformer.infer(input, lengths, None)

方法

forward

ConvEmformer.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

ConvEmformer.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 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源