快捷方式

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

已弃用

警告

此类从 2.8 版本开始已弃用,将在 2.9 版本中移除。此弃用是 TorchAudio 向维护阶段过渡的大规模重构工作的一部分。有关更多信息,请参阅 https://github.com/pytorch/audio/issues/3902

实现了卷积增强流式 Transformer 架构,该架构在

基于卷积的流式 Transformer Transducer 语音识别 [Shi et al., 2022] 中介绍。

参数 (Args)

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 或 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) – 用右上下文帧右填充的语音帧,形状为 (B, T + right_context_length, D)

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

返回

张量

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

张量

输出长度,形状为 (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) – 用右上下文帧右填充的语音帧,形状为 (B, segment_length + right_context_length, D)

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

  • states (List[List[torch.Tensor]] 或 None, optional) – 张量列表的列表,表示 infer 前一次调用的内部状态。(默认:None)

返回

张量

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

张量

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

List[List[Tensor]]

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

返回类型

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

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源