speechbrain.nnet.pooling 模块

实现池化的库。

作者
  • Titouan Parcollet 2020

  • Mirco Ravanelli 2020

  • Nauman Dawalatabad 2020

  • Jianyuan Zhong 2020

  • Sarthak Yadav 2022

  • Ha Nguyen 2023

摘要

AdaptivePool

这个类实现了自适应平均池化。

AttentionPooling

这个函数实现了自注意力池化 (https://arxiv.org/abs/2008.01077)。

GaussianLowpassPooling

这个类实现了一个可学习的高斯低通池化,来自

Pooling1d

这个函数实现了输入张量的 1d 池化。

Pooling2d

这个函数实现了输入张量的 2d 池化。

StatisticsPooling

这个类实现了一个统计池化层。

参考

class speechbrain.nnet.pooling.Pooling1d(pool_type, kernel_size, input_dims=3, pool_axis=1, ceil_mode=False, padding=0, dilation=1, stride=None)[source]

基类:Module

这个函数实现了输入张量的 1d 池化。

参数:
  • pool_type (str) – 要使用的池化函数类型(‘avg’,‘max’)。

  • kernel_size (int) – 定义池化维度的核大小。例如,kernel size=3 应用一个大小为 3 的 1D 池化。

  • input_dims (int) – 输入中预期的维度数量。

  • pool_axis (int) – 应用池化的轴。

  • ceil_mode (bool) – 当为 True 时,将使用 ceil 而非 floor 计算输出形状。

  • padding (int) – 要应用的填充元素数量。

  • dilation (int) – 控制池化的扩张因子。

  • stride (int) – 步幅大小。

示例

>>> pool = Pooling1d('max',3)
>>> inputs = torch.rand(10, 12, 40)
>>> output=pool(inputs)
>>> output.shape
torch.Size([10, 4, 40])
forward(x)[source]

对输入张量执行 1d 池化。

参数:

x (torch.Tensor) – 表示一个 mini-batch 的张量。

返回:

x – 池化后的输出。

返回类型:

torch.Tensor

class speechbrain.nnet.pooling.Pooling2d(pool_type, kernel_size, pool_axis=(1, 2), ceil_mode=False, padding=0, dilation=1, stride=None)[source]

基类:Module

这个函数实现了输入张量的 2d 池化。

参数:
  • pool_type (str) – 要使用的池化函数类型(‘avg’,‘max’)。

  • kernel_size (int) – 定义池化维度的核大小。例如,kernel size=3,3 执行一个 3x3 核的 2D 池化。

  • pool_axis (tuple) – 一个包含在池化期间将被考虑的轴的列表。

  • ceil_mode (bool) – 当为 True 时,将使用 ceil 而非 floor 计算输出形状。

  • padding (int) – 要应用的填充元素数量。

  • dilation (int) – 控制池化的扩张因子。

  • stride (int) – 步幅大小。

示例

>>> pool = Pooling2d('max',(5,3))
>>> inputs = torch.rand(10, 15, 12)
>>> output=pool(inputs)
>>> output.shape
torch.Size([10, 3, 4])
forward(x)[source]

对输入张量执行 2d 池化。

参数:

x (torch.Tensor) – 表示一个 mini-batch 的张量。

返回:

x – 池化后的输出。

返回类型:

torch.Tensor

class speechbrain.nnet.pooling.StatisticsPooling(return_mean=True, return_std=True)[source]

基类:Module

这个类实现了一个统计池化层。

返回输入张量的均值和/或标准差。

参数:
  • return_mean (bool) – 如果为 True,将返回平均池化结果。

  • return_std (bool) – 如果为 True,将返回标准差。

示例

>>> inp_tensor = torch.rand([5, 100, 50])
>>> sp_layer = StatisticsPooling()
>>> out_tensor = sp_layer(inp_tensor)
>>> out_tensor.shape
torch.Size([5, 1, 100])
forward(x, lengths=None)[source]

计算一个批次(输入张量)的均值和标准差。

参数:
  • x (torch.Tensor) – 表示一个 mini-batch 的张量。

  • lengths (torch.Tensor) – 输入中样本的长度。

返回:

pooled_stats – 输入的均值和标准差。

返回类型:

torch.Tensor

class speechbrain.nnet.pooling.AdaptivePool(output_size)[source]

基类:Module

这个类实现了自适应平均池化。

参数:

output_size (int) – 输出大小。

示例

>>> pool = AdaptivePool(1)
>>> inp = torch.randn([8, 120, 40])
>>> output = pool(inp)
>>> output.shape
torch.Size([8, 1, 40])
forward(x)[source]

对输入张量执行自适应池化。

参数:

x (torch.Tensor) – 表示一个 mini-batch 的张量。

返回:

x – 池化后的输出。

返回类型:

torch.Tensor

class speechbrain.nnet.pooling.GaussianLowpassPooling(in_channels, kernel_size, stride=1, initialization_constant=0.4, padding='same', padding_mode='constant', bias=True, skip_transpose=False)[source]

基类:Module

这个类实现了一个可学习的高斯低通池化,来自

Neil Zeghidour, Olivier Teboul, F{‘e}lix de Chaumont Quitry & Marco Tagliasacchi,“LEAF: A LEARNABLE FRONTEND FOR AUDIO CLASSIFICATION”,收录于 ICLR 2021 会议录 (https://arxiv.org/abs/2101.08596)

参数:
  • in_channels (int) – 输入通道的数量。

  • kernel_size (int) – 高斯低通滤波器核大小。

  • stride (int) – 卷积滤波器的步幅因子。当步幅因子 > 1 时,执行时间抽样。

  • initialization_constant (float) – 用于初始化的常数,默认为 0.4

  • padding (str) – (same, valid)。如果为 “valid”,则不执行填充。如果为 “same” 且步幅为 1,则输出形状与输入形状相同。

  • padding_mode (str) – 此标志指定填充类型。请参阅 torch.nn 文档了解更多信息。

  • bias (bool) – 如果为 True,采用加性偏差 b。

  • skip_transpose (bool) – 如果为 False,使用 speechbrain 的 batch x time x channel 约定。如果为 True,使用 batch x channel x time 约定。

示例

>>> inp_tensor = torch.rand([10, 8000, 40])
>>> low_pass_pooling = GaussianLowpassPooling(
...     40, kernel_size=401, stride=160,
... )
>>> # parameters corresponding to a window of 25 ms and stride 10 ms at 16000 kHz
>>> out_tensor = low_pass_pooling(inp_tensor)
>>> out_tensor.shape
torch.Size([10, 50, 40])
forward(x)[source]

执行高斯低通池化。

参数:

x (torch.Tensor) – 输入的 3D 张量 [batch,time,channels]。

返回:

outputs – 池化后的输出。

返回类型:

torch.Tensor

class speechbrain.nnet.pooling.AttentionPooling(input_dim)[source]

基类:Module

这个函数实现了自注意力池化 (https://arxiv.org/abs/2008.01077)。

参数:

input_dim (int) – 输入 torch.Tensor 的维度。

示例

>>> inp_tensor = torch.rand([4, 40])
>>> pool = AttentionPooling(input_dim=40)
>>> out_tensor = pool(inp_tensor)
forward(x)[source]

返回适配器的输出。

参数:

x (torch.Tensor) – 输入张量。

返回:

out – 池化后的输出。

返回类型:

torch.Tensor