Transformers 文档

SEW

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

SEW

PyTorch FlashAttention SDPA

概述

SEW (Squeezed and Efficient Wav2Vec) 是由 Felix Wu、Kwangyoun Kim、Jing Pan、Kyu Han、Kilian Q. Weinberger、Yoav Artzi 在 Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition 中提出的。

该论文的摘要如下:

本文研究了用于自动语音识别(ASR)的预训练模型在性能和效率之间的权衡。我们专注于 wav2vec 2.0,并将影响模型性能及其效率的几种架构设计形式化。结合我们所有的观察结果,我们推出了 SEW(Squeezed and Efficient Wav2vec,即压缩高效的 Wav2vec),这是一种预训练模型架构,在各种训练设置中,在性能和效率维度上均实现了显著提升。例如,在 LibriSpeech 上的 100h-960h 半监督设置下,与 wav2vec 2.0 相比,SEW 实现了 1.9 倍的推理加速,单词错误率相对降低了 13.5%。在相似的推理时间下,SEW 在不同模型尺寸下将单词错误率降低了 25-50%。

此模型由 anton-l 贡献。

使用技巧

  • SEW 是一种语音模型,它接受对应于语音信号原始波形的浮点数组。
  • SEWForCTC 使用连接时序分类(CTC)进行微调,因此模型输出必须使用 Wav2Vec2CTCTokenizer 进行解码。

资源

SEWConfig

class transformers.SEWConfig

< >

( vocab_size = 32 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 squeeze_factor = 2 hidden_act = 'gelu' hidden_dropout = 0.1 activation_dropout = 0.1 attention_dropout = 0.1 feat_proj_dropout = 0.0 final_dropout = 0.1 layerdrop = 0.1 initializer_range = 0.02 layer_norm_eps = 1e-05 feat_extract_norm = 'group' feat_extract_activation = 'gelu' conv_dim = (64, 128, 128, 128, 128, 256, 256, 256, 256, 512, 512, 512, 512) conv_stride = (5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1) conv_kernel = (10, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1) conv_bias = False num_conv_pos_embeddings = 128 num_conv_pos_embedding_groups = 16 apply_spec_augment = True mask_time_prob = 0.05 mask_time_length = 10 mask_time_min_masks = 2 mask_feature_prob = 0.0 mask_feature_length = 10 mask_feature_min_masks = 0 ctc_loss_reduction = 'mean' ctc_zero_infinity = False use_weighted_layer_sum = False classifier_proj_size = 256 pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 32) — SEW 模型的词汇表大小。定义了在调用 SEW 时传递的 inputs_ids 可以表示的不同 token 的数量。
  • hidden_size (int, 可选, 默认为 768) — 编码器层和池化器层的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 编码器中隐藏层的数量。
  • num_attention_heads (int, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。
  • intermediate_size (int, 可选, 默认为 3072) — Transformer 编码器中“中间”层(即,前馈层)的维度。
  • squeeze_factor (int, 可选, 默认为 2) — 编码器之后的序列长度下采样因子和 Transformer 之后的上采样因子。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""selu""gelu_new"
  • hidden_dropout (float, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • activation_dropout (float, 可选, 默认为 0.1) — 全连接层内部激活的 dropout 比率。
  • attention_dropout (float, 可选, 默认为 0.1) — 注意力概率的 dropout 比率。
  • final_dropout (float, 可选, 默认为 0.1) — SEWForCTC 的最终投影层的 dropout 概率。
  • layerdrop (float, 可选, 默认为 0.1) — LayerDrop 概率。 有关更多详细信息,请参阅 [LayerDrop 论文](see https://arxiv.org/abs/1909.11556)。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-12) — 层归一化层使用的 epsilon 值。
  • feat_extract_norm (str, 可选, 默认为 "group") — 应用于特征编码器中 1D 卷积层的归一化方法。 可以是 "group" (仅对第一个 1D 卷积层进行组归一化) 或 "layer" (对所有 1D 卷积层进行层归一化)。
  • feat_proj_dropout (float, 可选, 默认为 0.0) — 特征编码器输出的 dropout 概率。
  • feat_extract_activation (str, 可选, 默认为 “gelu”) -- 特征提取器 1D 卷积层中的非线性激活函数(函数或字符串)。 如果是字符串,则支持 “gelu”, “relu”, “selu”“gelu_new”`。
  • conv_dim (Tuple[int]List[int], 可选, 默认为 (64, 128, 128, 128, 128, 256, 256, 256, 256, 512, 512, 512, 512)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的输入和输出通道数。 conv_dim 的长度定义了 1D 卷积层的数量。
  • conv_stride (Tuple[int]List[int], 可选, 默认为 (5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的步幅。 conv_stride 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度匹配。
  • conv_kernel (Tuple[int]List[int], 可选, 默认为 (10, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的内核大小。 conv_kernel 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度匹配。
  • conv_bias (bool, 可选, 默认为 False) — 1D 卷积层是否具有偏置。
  • num_conv_pos_embeddings (int, 可选, 默认为 128) — 卷积位置嵌入的数量。 定义了 1D 卷积位置嵌入层的内核大小。
  • num_conv_pos_embedding_groups (int, 可选, 默认为 16) — 1D 卷积位置嵌入层的组数。
  • apply_spec_augment (bool, 可选, 默认为 True) — 是否将 SpecAugment 数据增强应用于特征编码器的输出。 有关参考,请参阅 SpecAugment: 一种用于自动语音识别的简单数据增强方法
  • mask_time_prob (float, 可选, 默认为 0.05) — 沿时间轴屏蔽所有特征向量的百分比(介于 0 和 1 之间)。 屏蔽过程生成 “mask_time_prob*len(time_axis)/mask_time_length” 沿轴的独立掩码。 如果从每个特征向量被选为要屏蔽的向量跨度起点的概率进行推理,则 mask_time_prob 应为 `prob_vector_start*mask_time_length`。 请注意,重叠可能会降低实际屏蔽向量的百分比。 这仅在 apply_spec_augment 为 True 时相关。
  • mask_time_length (int, 可选, 默认为 10) — 沿时间轴的向量跨度长度。
  • mask_time_min_masks (int, 可选, 默认为 2), — 沿时间轴生成的长度为 mask_feature_length 的掩码的最小数量,每个时间步,与 mask_feature_prob 无关。 仅当 “mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” 时相关
  • mask_feature_prob (float, 可选, 默认为 0.0) — 沿特征轴屏蔽所有特征向量的百分比(介于 0 和 1 之间)。 屏蔽过程生成 “mask_feature_prob*len(feature_axis)/mask_time_length” 沿轴的独立掩码。 如果从每个特征向量被选为要屏蔽的向量跨度起点的概率进行推理,则 mask_feature_prob 应为 `prob_vector_start*mask_feature_length`。 请注意,重叠可能会降低实际屏蔽向量的百分比。 这仅在 apply_spec_augment 为 True 时相关。
  • mask_feature_length (int, 可选, 默认为 10) — 沿特征轴的向量跨度长度。
  • mask_feature_min_masks (int, 可选, 默认为 0), — 沿特征轴生成的长度为 mask_feature_length 的掩码的最小数量,每个时间步,与 mask_feature_prob 无关。 仅当 “mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks” 时相关
  • ctc_loss_reduction (str, 可选, 默认为 "sum") — 指定应用于 torch.nn.CTCLoss 输出的 reduction 方式。 仅在训练 SEWForCTC 实例时相关。
  • ctc_zero_infinity (bool, 可选, 默认为 False) — 是否将 torch.nn.CTCLoss 的无限损失和相关梯度置零。 当输入太短而无法与目标对齐时,主要会发生无限损失。 仅在训练 SEWForCTC 实例时相关。
  • use_weighted_layer_sum (bool, 可选, 默认为 False) — 是否使用带有学习权重的层输出的加权平均值。 仅在使用 Wav2Vec2ForSequenceClassification 实例时相关。
  • classifier_proj_size (int, 可选, 默认为 256) — 分类前 token 均值池化的投影维度。

这是用于存储 SEWModel 配置的配置类。 它用于根据指定的参数实例化 SEW 模型,定义模型架构。 使用默认值实例化配置将产生类似于 SEW asapp/sew-tiny-100k 架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。 有关更多信息,请阅读 PretrainedConfig 的文档。

示例

>>> from transformers import SEWConfig, SEWModel

>>> # Initializing a SEW asapp/sew-tiny-100k style configuration
>>> configuration = SEWConfig()

>>> # Initializing a model (with random weights) from the asapp/sew-tiny-100k style configuration
>>> model = SEWModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

SEWModel

class transformers.SEWModel

< >

( config: SEWConfig )

参数

  • config (SEWConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。

裸SEW模型 Transformer,输出原始的 hidden-states,顶部没有任何特定的 head。SEW 由 Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi 在 Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition 中提出。

此模型继承自 PreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。像常规 PyTorch 模块一样使用它,并参阅 PyTorch 文档以获取与通用用法和行为相关的所有事项。

forward

< >

( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None mask_time_indices: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。值可以通过将 .flac.wav 音频文件加载到 List[float] 类型或 numpy.ndarray 类型的数组中获得,例如 通过 soundfile 库 (pip install soundfile)。 要将数组准备为 input_values,应使用 AutoProcessor 进行填充和转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.call()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于避免在 padding 标记索引上执行卷积和 attention 的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的标记,
    • 0 表示 被掩码 的标记。

    什么是 attention masks?

  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions 张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回值

transformers.modeling_outputs.BaseModelOutputtuple(torch.FloatTensor)

transformers.modeling_outputs.BaseModelOutputtorch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包括取决于配置 (SEWConfig) 和输入的各种元素。

  • last_hidden_state (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的 hidden states 序列。

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则一个用于嵌入的输出,+ 每个层的输出一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的 Hidden-states,加上可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), 可选, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    attention softmax 之后的 attentions 权重,用于计算自注意力头中的加权平均值。

SEWModel 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoProcessor, SEWModel
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation", trust_remote_code=True)
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("asapp/sew-tiny-100k-ft-ls100h")
>>> model = SEWModel.from_pretrained("asapp/sew-tiny-100k-ft-ls100h")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 292, 512]

SEWForCTC

class transformers.SEWForCTC

< >

( config target_lang: typing.Optional[str] = None )

参数

  • config (SEWConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。

带有用于连接时序分类 (CTC) 的 language modeling head 的 SEW 模型。SEW 由 Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi 在 Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition 中提出。

此模型继承自 PreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。像常规 PyTorch 模块一样使用它,并参阅 PyTorch 文档以获取与通用用法和行为相关的所有事项。

forward

< >

( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.Tensor] = None ) transformers.modeling_outputs.CausalLMOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。值可以通过将 .flac.wav 音频文件加载到 List[float] 类型或 numpy.ndarray 类型的数组中获得,例如 通过 soundfile 库 (pip install soundfile)。 要将数组准备为 input_values,应使用 AutoProcessor 进行填充和转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.call()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于避免在 padding 标记索引上执行卷积和 attention 的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的标记,
    • 0 表示 被掩码 的标记。

    什么是 attention masks?

  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions 张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels (torch.LongTensor,形状为 (batch_size, target_length)可选) — 用于连接时序分类的标签。 请注意,target_length 必须小于或等于输出 logits 的序列长度。 索引在 [-100, 0, ..., config.vocab_size - 1] 中选择。 所有设置为 -100 的标签都将被忽略(掩码),损失仅针对 [0, ..., config.vocab_size - 1] 中的标签计算。

返回值

transformers.modeling_outputs.CausalLMOutputtuple(torch.FloatTensor)

transformers.modeling_outputs.CausalLMOutputtorch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包括取决于配置 (SEWConfig) 和输入的各种元素。

  • loss (torch.FloatTensor,形状为 (1,)可选,当提供 labels 时返回) — 语言建模损失(用于下一个标记预测)。

  • logits (torch.FloatTensor,形状为 (batch_size, sequence_length, config.vocab_size)) — 语言建模 head 的预测分数(SoftMax 之前每个词汇标记的分数)。

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则一个用于嵌入的输出,+ 每个层的输出一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的 Hidden-states,加上可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), 可选, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    attention softmax 之后的 attentions 权重,用于计算自注意力头中的加权平均值。

SEWForCTC 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoProcessor, SEWForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation", trust_remote_code=True)
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("asapp/sew-tiny-100k-ft-ls100h")
>>> model = SEWForCTC.from_pretrained("asapp/sew-tiny-100k-ft-ls100h")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
'MISTER QUILTER IS THE APPOSTILE OF THE MIDDLE CLASSES AND WE ARE GLAD TO WELCOME HIS GOSPOLLE'

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
0.42

SEWForSequenceClassification

class transformers.SEWForSequenceClassification

< >

( config )

参数

  • config (SEWConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。

带有序列分类 head 的 SEW 模型,该 head 位于顶部(池化输出之上的线性层),用于诸如 SUPERB 关键词识别之类的任务。

SEW 由 Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi 在 Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition 中提出。

此模型继承自 PreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。像常规 PyTorch 模块一样使用它,并参阅 PyTorch 文档以获取与通用用法和行为相关的所有事项。

forward

< >

( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.Tensor] = None ) transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

参数

  • input_values (形状为 (batch_size, sequence_length)torch.FloatTensor) — 输入原始语音波形的浮点数值。可以通过将 .flac.wav 音频文件加载到 List[float] 类型的数组或 numpy.ndarray 中来获得值,例如 通过 soundfile 库 (pip install soundfile)。为了将数组准备为 input_values,应该使用 AutoProcessor 进行填充并转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.call()
  • attention_mask (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 掩码,用于避免在填充 token 索引上执行卷积和注意力机制。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的 token,
    • 0 表示 已被掩码 的 token。

    什么是注意力掩码?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算序列分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失),如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回值

transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个 torch.FloatTensor 元组 (如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (SEWConfig) 和输入。

  • loss (形状为 (1,)torch.FloatTensor, 可选, 当提供 labels 时返回) — 分类(或回归,如果 config.num_labels==1)损失。

  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(或回归,如果 config.num_labels==1)得分(在 SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则一个用于嵌入的输出,+ 每个层的输出一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的 Hidden-states,加上可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), 可选, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    attention softmax 之后的 attentions 权重,用于计算自注意力头中的加权平均值。

SEWForSequenceClassification 前向方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoFeatureExtractor, SEWForSequenceClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation", trust_remote_code=True)
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("anton-l/sew-mid-100k-ft-keyword-spotting")
>>> model = SEWForSequenceClassification.from_pretrained("anton-l/sew-mid-100k-ft-keyword-spotting")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.argmax(logits, dim=-1).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]
>>> predicted_label
'_unknown_'

>>> # compute loss - target_label is e.g. "down"
>>> target_label = model.config.id2label[0]
>>> inputs["labels"] = torch.tensor([model.config.label2id[target_label]])
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
9.52
< > 在 GitHub 上更新