目录
引言
音频频谱图变换器(Audio Spectrogram Transformer,简称AST)是由Yuan Gong, Yu-An Chung, James Glass提出的一个模型。它通过将音频转换为图像(即频谱图)的方式,使用视觉变换器(Vision Transformer)来处理音频数据,并在音频分类任务上取得了最先进的结果。
在过去的十年里,卷积神经网络(CNN)被广泛应用于端到端的音频分类模型中,这类模型旨在学习从音频频谱图到对应标签的直接映射。为了更好地捕捉长距离的全局上下文信息,最近的趋势是在CNN的基础上添加自注意力机制,形成一个CNN-注意力机制混合模型。然而,这种方法是否必须依赖于CNN尚不清楚,而且使用纯基于注意力的神经网络是否足以在音频分类中获得良好性能也是一个问题。在这篇论文中,我们通过引入AST来回答这个问题,这是第一个用于音频分类的纯粹基于注意力、无需卷积的模型。我们在不同的音频分类基准测试中对AST进行了评估,它在AudioSet上达到了0.485的平均精度(mAP),在ESC-50上的准确率为95.6%,在Speech Commands V2上的准确率为98.1%,均刷新了记录。
ASTConfig
ASTConfig
类是用来存储音频频谱图变换器(Audio Spectrogram Transformer, 简称AST)模型配置的类。这个类通过指定的参数定义了模型的架构。使用默认配置实例化一个配置对象将产生一个与AST MIT/ast-finetuned-audioset-10-10-0.4593架构相似的配置。
下面是ASTConfig
参数的详细解释,以及如何使用这些参数来初始化AST模型的示例代码,并包含中文代码注释。
参数解释
hidden_size
(int, 可选, 默认为 768) — 编码器层和池化层的维度。num_hidden_layers
(int, 可选, 默认为 12) — Transformer编码器中隐藏层的数量。num_attention_heads
(int, 可选, 默认为 12) — Transformer编码器中每个注意力层的注意力头数量。intermediate_size
(int, 可选, 默认为 3072) — Transformer编码器中“中间”(即前馈)层的维度。hidden_act
(str 或 function, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu", "relu", "selu" 和 "gelu_new"。hidden_dropout_prob
(float, 可选, 默认为 0.0) — 嵌入层、编码器和池化器中所有全连接层的dropout概率。attention_probs_dropout_prob
(float, 可选, 默认为 0.0) — 注意力概率的dropout比率。initializer_range
(float, 可选, 默认为 0.02) — 初始化所有权重矩阵的truncated_normal_initializer的标准差。layer_norm_eps
(float, 可选, 默认为 1e-12) — 层归一化层使用的epsilon值。patch_size
(int, 可选, 默认为 16) — 每个补丁的大小(分辨率)。qkv_bias
(bool, 可选, 默认为 True) — 是否给查询、键和值添加偏差。frequency_stride
(int, 可选, 默认为 10) — 在对频谱图进行补丁化时使用的频率步幅。time_stride
(int, 可选, 默认为 10) — 在对频谱图进行补丁化时使用的时间步幅。max_length
(int, 可选, 默认为 1024) — 频谱图的时间维度。num_mel_bins
(int, 可选, 默认为 128) — 频谱图的频率维度(Mel频率窗口的数量)。
配置对象继承自PretrainedConfig
,可以用来控制模型输出。更多信息请阅读PretrainedConfig
的文档。
示例代码及注释
from transformers import ASTConfig, ASTModel
# 初始化一个AST MIT/ast-finetuned-audioset-10-10-0.4593风格的配置
configuration = ASTConfig()
# 使用MIT/ast-finetuned-audioset-10-10-0.4593