# SEW-D

## Aperçu

SEW-D (Squeezed and Efficient Wav2Vec with Disentangled attention) a été proposé dans [Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition](https://huggingface.co/papers/2109.06870) par Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi.

L'abstract de l'article est le suivant :

*Cet article étudie les compromis entre performance et efficacité des modèles pré-entraînés pour la reconnaissance automatique de la parole (ASR). Nous nous concentrons sur wav2vec 2.0 et formalisons plusieurs conceptions d’architecture qui influencent à la fois les performances du modèle et son efficacité. En combinant l’ensemble de nos observations, nous introduisons SEW (Squeezed and Efficient Wav2vec), une architecture de modèle pré-entraîné qui apporte des améliorations significatives sur les deux axes, performance et efficacité, dans diverses configurations d’entraînement. Par exemple, dans le cadre semi-supervisé de 100h-960h sur LibriSpeech, SEW atteint une accélération de l’inférence de 1,9 fois par rapport à wav2vec 2.0, avec une réduction relative du taux d’erreur de mot de 13,5 %. Pour un temps d’inférence similaire, SEW réduit le taux d’erreur de mot de 25 à 50 % selon les différentes tailles de modèle.*

Ce modèle a été contribué par [anton-l](https://huggingface.co/anton-l).

## Conseils d'utilisation

- SEW-D est un modèle de parole qui accepte un tableau de nombres flottants correspondant à la forme d’onde brute du signal de parole.
- SEWDForCTC est ajusté à l'aide de la classification temporelle connexionniste (CTC), de sorte que la sortie du modèle doit être décodée à l'aide de [Wav2Vec2CTCTokenizer](/docs/transformers/main/fr/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer).

## Ressources

- [Guide de la tâche de classification audio](../tasks/audio_classification)
- [Guide de la tâche de reconnaissance automatique de la parole](../tasks/asr)

## SEWDConfig[[transformers.SEWDConfig]]

#### transformers.SEWDConfig[[transformers.SEWDConfig]]

```python
transformers.SEWDConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 32, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, squeeze_factor: int = 2, max_position_embeddings: int = 512, position_buckets: int = 256, share_att_key: bool = True, relative_attention: bool = True, pos_att_type: list[str] | tuple[str, ...] = ('p2c', 'c2p'), norm_rel_ebd: str = 'layer_norm', hidden_act: str = 'gelu_python', hidden_dropout: float | int = 0.1, activation_dropout: float | int = 0.1, attention_dropout: float | int = 0.1, feat_proj_dropout: float | int = 0.0, final_dropout: float | int = 0.1, initializer_range: float = 0.02, layer_norm_eps: float = 1e-07, feature_layer_norm_eps: float = 1e-05, feat_extract_norm: str = 'group', feat_extract_activation: str = 'gelu', conv_dim: list[int] | tuple[int, ...] = (64, 128, 128, 128, 128, 256, 256, 256, 256, 512, 512, 512, 512), conv_stride: list[int] | tuple[int, ...] = (5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1), conv_kernel: list[int] | tuple[int, ...] = (10, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1), conv_bias: bool = False, num_conv_pos_embeddings: int = 128, num_conv_pos_embedding_groups: int = 16, apply_spec_augment: bool = True, mask_time_prob: float | int = 0.05, mask_time_length: int = 10, mask_time_min_masks: int = 2, mask_feature_prob: float | int = 0.0, mask_feature_length: int = 10, mask_feature_min_masks: int = 0, ctc_loss_reduction: str = 'mean', ctc_zero_infinity: bool = False, use_weighted_layer_sum: bool = False, classifier_proj_size: int = 256, pad_token_id: int | None = 0, bos_token_id: int | None = 1, eos_token_id: int | list[int] | None = 2)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/configuration_sew_d.py#L27)

**Paramètres :**

vocab_size (`int`, *facultatif*, valeur par défaut `32`) : Taille du vocabulaire du modèle. Définit le nombre de jetons différents qui peuvent être représentés par `input_ids`.

hidden_size (`int`, *facultatif*, par défaut `768`) : Dimension des représentations cachées.

num_hidden_layers (`int`, *facultatif*, par défaut `12`) : Nombre de couches cachées dans le décodeur Transformer.

num_attention_heads (`int`, *facultatif*, valeur par défaut `12`) : Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer.

intermediate_size (`int`, *facultatif*, par défaut `3072`) : Dimension des représentations MLP.

squeeze_factor (`int`, *facultatif*, valeur par défaut : 2) : Facteur de sous-échantillonnage de la longueur de la séquence après l'encodeur et facteur de sur-échantillonnage après le transformeur.

max_position_embeddings (`int`, *facultatif*, valeur par défaut `512`) : La longueur de séquence maximale avec laquelle ce modèle pourrait être utilisé.

position_buckets (`int`, *facultatif*, valeur par défaut 256) : La taille maximale des embeddings de position relative.

share_att_key (`bool`, *facultatif*, valeur par défaut `True`) : Indique s'il faut partager la clé d'attention avec c2p et p2c.

relative_attention (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut utiliser un encodage de position relative.

pos_att_type (`tuple[str]`, *facultatif*, valeur par défaut `("p2c", "c2p")`) : Le type d'attention de position relative, il peut être une combinaison de `("p2c", "c2p")`, par exemple `("p2c")`, `("p2c", "c2p")`, `("p2c", "c2p")`.

norm_rel_ebd (`str`, *facultatif*, valeur par défaut `"layer_norm"`) : Indique s'il faut utiliser la normalisation par couche dans l'encodage relatif (`"layer_norm"` si oui)

hidden_act (`str`, *facultatif*, par défaut `gelu_python`) : La fonction d'activation non linéaire (fonction ou chaîne de caractères) dans le décodeur. Par exemple, `"gelu"`, `"relu"`, `"silu"`, etc.

hidden_dropout (`Union[float, int]`, *facultatif*, valeur par défaut `0.1`) : La probabilité de dropout pour toutes les couches entièrement connectées des embeddings, de l'encodeur et du pooler.

activation_dropout (`Union[float, int]`, *facultatif*, valeur par défaut `0.1`) : Le taux de dropout pour les activations à l'intérieur de la couche entièrement connectée.

attention_dropout (`Union[float, int]`, *facultatif*, valeur par défaut `0.1`) : Le taux de dropout appliqué aux probabilités d'attention.

feat_proj_dropout (`float`, *facultatif*, valeur par défaut 0.0) : Probabilité de dropout pour la sortie de l'encodeur de caractéristiques.

final_dropout (`float`, *facultatif*, valeur par défaut 0.1) : La probabilité de dropout pour la couche de projection finale de [SEWDForCTC](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDForCTC).

initializer_range (`float`, *facultatif*, valeur par défaut `0.02`) : L'écart-type de la truncated_normal_initializer utilisé pour l'initialisation de toutes les matrices de poids.

layer_norm_eps (`float`, *facultatif*, par défaut `1e-07`) : L'épsilon utilisé par les couches de normalisation par couche.

feature_layer_norm_eps (`float`, *facultatif*, valeur par défaut 1e-5) : L'épsilon utilisé par la normalisation de couche après l'encodeur de caractéristiques.

feat_extract_norm (`str`, *facultatif*, valeur par défaut `"group"`) : La normalisation à appliquer aux couches de convolution 1D de l'encodeur de caractéristiques. Soit `"group"` pour une normalisation par groupe appliquée uniquement à la première couche de convolution 1D, soit `"layer"` pour une normalisation par couche appliquée à toutes les couches de convolution 1D.

feat_extract_activation (`str, `optional`, defaults to `"gelu"`) : The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, `"gelu"`, `"relu"`, `"selu"` and `"gelu_new"` are supported.

conv_dim (`tuple[int]` ou `list[int]`, *facultatif*, par défaut `(64, 128, 128, 128, 128, 256, 256, 256, 256, 512, 512, 512, 512)`) : Un tuple d'entiers définissant le nombre de canaux d'entrée et de sortie de chaque couche convolutive 1D dans l'encodeur de caractéristiques. La longueur de *conv_dim* définit le nombre de couches convolutives 1D.

conv_stride (`tuple[int]` ou `list[int]`, *facultatif*, valeur par défaut `(5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1)`) : Un tuple d'entiers définissant le pas de chaque couche de convolution 1D dans l'encodeur de caractéristiques. La longueur de *conv_stride* définit le nombre de couches de convolution et doit correspondre à la longueur de *conv_dim*.

conv_kernel (`tuple[int]` ou `list[int]`, *facultatif*, valeur par défaut `(10, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1)`) : Un tuple d'entiers définissant la taille du noyau de chaque couche convolutive 1D dans l'encodeur de caractéristiques. La longueur de *conv_kernel* définit le nombre de couches convolutives et doit correspondre à la longueur de *conv_dim*.

conv_bias (`bool`, *facultatif*, par défaut `False`) : Indique si les couches de convolution 1D ont un biais.

num_conv_pos_embeddings (`int`, *facultatif*, valeur par défaut 128) : Nombre d'incorporations positionnelles convolutives. Définit la taille du noyau de la couche d'incorporations positionnelles convolutives 1D.

num_conv_pos_embedding_groups (`int`, *facultatif*, valeur par défaut 16) : Nombre de groupes de la couche d'embeddings positionnels de convolution 1D.

apply_spec_augment (`bool`, *facultatif*, valeur par défaut `True`) : Indique s'il faut appliquer l'augmentation de données *SpecAugment* aux sorties de l'encodeur de caractéristiques. Pour référence, voir [SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition](https://huggingface.co/papers/1904.08779).

mask_time_prob (`float`, *facultatif*, valeur par défaut 0.05) : Pourcentage (compris entre 0 et 1) de tous les vecteurs de caractéristiques le long de l'axe temporel qui seront masqués. La procédure de masquage génère ''mask_time_prob*len(time_axis)/mask_time_length'' masques indépendants sur l'axe. Si l'on raisonne à partir de la probabilité que chaque vecteur de caractéristiques soit choisi comme début de la portée de vecteurs à masquer, *mask_time_prob* doit être `prob_vector_start*mask_time_length`. Notez que les chevauchements peuvent réduire le pourcentage réel de vecteurs masqués. Cela n'est pertinent que si `apply_spec_augment is True`.

mask_time_length (`int`, *facultatif*, valeur par défaut 10) : Longueur de la portée du vecteur le long de l'axe temporel.

mask_time_min_masks (`int`, *facultatif*, valeur par défaut 2), : nombre minimal de masques de longueur `mask_feature_length` générés le long de l'axe temporel, à chaque pas de temps, indépendamment de `mask_feature_prob`. Ne concerne que le cas où ''mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks''

mask_feature_prob (`float`, *facultatif*, valeur par défaut 0.0) : Pourcentage (compris entre 0 et 1) de tous les vecteurs de caractéristiques le long de l'axe des caractéristiques qui seront masqués. La procédure de masquage génère ''mask_feature_prob*len(feature_axis)/mask_time_length'' masques indépendants sur l'axe. Si l'on raisonne à partir de la probabilité que chaque vecteur de caractéristiques soit choisi comme début de la portée du vecteur à masquer, *mask_feature_prob* doit être `prob_vector_start*mask_feature_length`. Notez que les chevauchements peuvent réduire le pourcentage réel de vecteurs masqués. Cela n'est pertinent que si `apply_spec_augment is True`.

mask_feature_prob (`Union[float, int]`, *facultatif*, valeur par défaut `0.0`) : Pourcentage (compris entre 0 et 1) de tous les vecteurs de caractéristiques le long de l'axe des caractéristiques qui seront masqués. La procédure de masquage génère `mask_feature_prob*len(feature_axis)/mask_time_length` masques indépendants sur l'axe. Si l'on raisonne à partir de la probabilité que chaque vecteur de caractéristiques soit choisi comme début de l'étendue de vecteurs à masquer, *mask_feature_prob* doit être `prob_vector_start*mask_feature_length`. Notez que les chevauchements peuvent réduire le pourcentage réel de vecteurs masqués. Cela n'est pertinent que si `apply_spec_augment` est `True`.

mask_feature_length (`int`, *facultatif*, par défaut 10) : Longueur de la portée du vecteur le long de l'axe des caractéristiques.

mask_feature_min_masks (`int`, *facultatif*, valeur par défaut 0) : le nombre minimal de masques de longueur `mask_feature_length` générés le long de l'axe des caractéristiques, à chaque pas de temps, indépendamment de `mask_feature_prob`. Ne concerne que le cas où ''mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks''

diversity_loss_weight (`int`, *facultatif*, valeur par défaut 0,1) : Le poids de la composante de perte de diversité du codebook.

ctc_loss_reduction (`str`, *facultatif*, valeur par défaut `mean`) : Spécifie la réduction à appliquer à la sortie de `torch.nn.CTCLoss`. Ne concerne que l'entraînement.

ctc_zero_infinity (`bool`, *facultatif*, valeur par défaut `False`) : Indique s'il faut mettre à zéro les pertes infinies et les gradients associés de `torch.nn.CTCLoss`. Les pertes infinies surviennent principalement lorsque les entrées sont trop courtes pour être alignées sur les cibles. Pertinent uniquement lors de l'entraînement d'une instance de [SEWDForCTC](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDForCTC).

use_weighted_layer_sum (`bool`, *facultatif*, par défaut `False`) : Indique s'il faut utiliser une moyenne pondérée des sorties des couches avec des poids appris. Ne concerne que l'utilisation d'une instance de [Wav2Vec2ForSequenceClassification](/docs/transformers/main/fr/model_doc/wav2vec2#transformers.Wav2Vec2ForSequenceClassification).

classifier_proj_size (`int`, *facultatif*, valeur par défaut 256) : Dimension de la projection avant le pooling par moyenne des jetons pour la classification.

pad_token_id (`int`, *facultatif*, valeur par défaut `0`) : Identifiant du jeton utilisé pour le bourrage dans le vocabulaire.

bos_token_id (`int`, *facultatif*, valeur par défaut `1`) : Identifiant du jeton utilisé pour le début de flux dans le vocabulaire.

eos_token_id (`Union[int, list[int]]`, *facultatif*, valeur par défaut `2`) : Identifiant de jeton utilisé pour la fin de flux dans le vocabulaire.

Ceci est la classe de configuration destinée à stocker la configuration d'un Sew DModel. Elle est utilisée pour instancier un modèle Sew D en fonction des arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de [BAAI/seggpt-vit-large](https://huggingface.co/BAAI/seggpt-vit-large)

Les objets de configuration héritent de [PreTrainedConfig](/docs/transformers/main/fr/main_classes/configuration#transformers.PreTrainedConfig) et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de [PreTrainedConfig](/docs/transformers/main/fr/main_classes/configuration#transformers.PreTrainedConfig) pour plus d’informations.

Exemple :

```python
>>> from transformers import SEWDConfig, SEWDModel

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

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

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

## SEWDModel[[transformers.SEWDModel]]

#### transformers.SEWDModel[[transformers.SEWDModel]]

```python
transformers.SEWDModel(config: SEWDConfig)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/modeling_sew_d.py#L1187)

**Paramètres :**

config ([SEWDConfig](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

Le modèle Sew D brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

#### forward[[transformers.SEWDModel.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, mask_time_indices: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/modeling_sew_d.py#L1254)

**Paramètres :**

input_values (`torch.Tensor` de forme `(batch_size, sequence_length)`, *facultatif*) : Valeurs flottantes de la forme d'onde brute de l'entrée audio. Les valeurs peuvent être obtenues en chargeant un fichier audio `.flac` ou `.wav` dans un tableau de type `list[float]`, un `numpy.ndarray` ou un `torch.Tensor`, *par exemple* via la bibliothèque torchcodec (`pip install torchcodec`) ou la bibliothèque soundfile (`pip install soundfile`). Pour préparer le tableau en `input_values`, le [AutoProcessor](/docs/transformers/main/fr/model_doc/auto#transformers.AutoProcessor) doit être utilisé pour le bourrage (padding) et la conversion en un tenseur de type `torch.Tensor`. Voir [Wav2Vec2Processor.__call__()](/docs/transformers/main/fr/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) pour plus de détails.

attention_mask (`torch.Tensor` de forme `(batch_size, sequence_length)`, *facultatif*) : Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans `[0, 1]` : - 1 pour les jetons qui ne sont **pas masqués**, - 0 pour les jetons qui sont **masqués**. [Qu'est-ce qu'un masque d'attention ?](../glossary#attention-mask)

mask_time_indices (`torch.BoolTensor` de forme `(batch_size, sequence_length)`, *facultatif*) : Indices pour masquer les fonctionnalités extraites pour la perte contrastive. En mode d'entraînement, le modèle apprend à prédire les fonctionnalités extraites masquées dans l'espace *config.proj_codevector_dim*.

**Retourne :** [BaseModelOutput](/docs/transformers/main/fr/main_classes/output#transformers.modeling_outputs.BaseModelOutput) ou `tuple(torch.Tensor)`

Un [BaseModelOutput](/docs/transformers/main/fr/main_classes/output#transformers.modeling_outputs.BaseModelOutput) ou un tuple de `torch.Tensor` (si `return_dict=False` est passé ou lorsque `config.return_dict=False`) comprenant divers éléments selon la configuration ([SEWDConfig](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDConfig)) et les entrées.

La méthode forward de [SEWDModel](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDModel) redéfinit la méthode spéciale `__call__`.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance `Module` plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

- **last_hidden_state** (`torch.Tensor` de forme `(batch_size, sequence_length, hidden_size)`) -- Séquence d'états cachés à la sortie de la dernière couche du modèle.
- **hidden_states** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_hidden_states=True` est passé ou lorsque `config.output_hidden_states=True`) -- Tuple de `torch.Tensor` (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme `(batch_size, sequence_length, hidden_size)`.

  États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
- **attentions** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_attentions=True` est passé ou lorsque `config.output_attentions=True`) -- Tuple de `torch.Tensor` (un par couche) de forme `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pondérations des attentions après le softmax d'attention, utilisées pour calculer la moyenne pondérée dans les têtes d'auto-attention.

## SEWDForCTC[[transformers.SEWDForCTC]]

#### transformers.SEWDForCTC[[transformers.SEWDForCTC]]

```python
transformers.SEWDForCTC(config: SEWDConfig, target_lang: str | None = None)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/modeling_sew_d.py#L1300)

**Paramètres :**

config ([SEWDConfig](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

target_lang (`str`, *facultatif*) : Identifiant de langue des poids de l'adaptateur. Les poids de l'adaptateur sont stockés au format adapter..safetensors ou adapter..bin. Pertinent uniquement lors de l'utilisation d'une instance de [SEWDForCTC](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDForCTC) avec des adaptateurs. Utilise 'eng' par défaut.

Modèle SEW-D avec une tête de `language modeling` pour la Classification Temporelle Connectiviste (CTC).

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

#### forward[[transformers.SEWDForCTC.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/modeling_sew_d.py#L1369)

**Paramètres :**

input_values (`torch.Tensor` de forme `(batch_size, sequence_length)`, *facultatif*) : Valeurs flottantes de la forme d'onde brute de l'entrée audio. Les valeurs peuvent être obtenues en chargeant un fichier audio `.flac` ou `.wav` dans un tableau de type `list[float]`, un `numpy.ndarray` ou un `torch.Tensor`, *par exemple* via la bibliothèque torchcodec (`pip install torchcodec`) ou la bibliothèque soundfile (`pip install soundfile`). Pour préparer le tableau en `input_values`, le [AutoProcessor](/docs/transformers/main/fr/model_doc/auto#transformers.AutoProcessor) doit être utilisé pour le bourrage (padding) et la conversion en un tenseur de type `torch.Tensor`. Voir [Wav2Vec2Processor.__call__()](/docs/transformers/main/fr/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) pour plus de détails.

attention_mask (`torch.Tensor` de forme `(batch_size, sequence_length)`, *facultatif*) : Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans `[0, 1]` : - 1 pour les jetons qui ne sont **pas masqués**, - 0 pour les jetons qui sont **masqués**. [Qu'est-ce qu'un masque d'attention ?](../glossary#attention-mask)

labels (`torch.LongTensor` de forme `(batch_size, target_length)`, *facultatif*) : Étiquettes pour la classification temporelle connexionniste. Notez que `target_length` doit être inférieur ou égal à la longueur de séquence des logits de sortie. Les indices sont sélectionnés dans `[-100, 0, ..., config.vocab_size - 1]`. Toutes les étiquettes définies sur `-100` sont ignorées (masquées) ; la perte n'est calculée que pour les étiquettes comprises dans `[0, ..., config.vocab_size - 1]`.

**Retourne :** [CausalLMOutput](/docs/transformers/main/fr/main_classes/output#transformers.modeling_outputs.CausalLMOutput) ou `tuple(torch.Tensor)`

Un [CausalLMOutput](/docs/transformers/main/fr/main_classes/output#transformers.modeling_outputs.CausalLMOutput) ou un tuple de `torch.Tensor` (si `return_dict=False` est passé ou lorsque `config.return_dict=False`) comprenant divers éléments en fonction de la configuration ([SEWDConfig](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDConfig)) et des entrées.

La méthode forward de [SEWDForCTC](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDForCTC) redéfinit la méthode spéciale `__call__`.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance `Module` plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

- **loss** (`torch.Tensor` de forme `(1,)`, *facultatif*, renvoyé lorsque `labels` est fourni) -- Perte de modélisation du langage (pour la prédiction du jeton suivant).
- **logits** (`torch.Tensor` de forme `(batch_size, sequence_length, config.vocab_size)`) -- Scores de prédiction de la tête de modélisation du langage (scores pour chaque jeton du vocabulaire avant SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_hidden_states=True` est passé ou lorsque `config.output_hidden_states=True`) -- Tuple de `torch.Tensor` (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme `(batch_size, sequence_length, hidden_size)`.

  États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
- **attentions** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_attentions=True` est passé ou lorsque `config.output_attentions=True`) -- Tuple de `torch.Tensor` (un par couche) de forme `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pondérations des attentions après le softmax d'attention, utilisées pour calculer la moyenne pondérée dans les têtes d'auto-attention.

Exemple :

```python
>>> from transformers import AutoProcessor, SEWDForCTC
>>> from datasets import load_dataset
>>> import torch

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

>>> processor = AutoProcessor.from_pretrained("BAAI/seggpt-vit-large")
>>> model = SEWDForCTC.from_pretrained("BAAI/seggpt-vit-large")

>>> # 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]
...

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

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

## SEWDForSequenceClassification[[transformers.SEWDForSequenceClassification]]

#### transformers.SEWDForSequenceClassification[[transformers.SEWDForSequenceClassification]]

```python
transformers.SEWDForSequenceClassification(config: SEWDConfig)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/modeling_sew_d.py#L1428)

**Paramètres :**

config ([SEWDConfig](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

Modèle SEWD avec une tête de classification de séquence au sommet (une couche linéaire sur la sortie agrégée) pour des tâches telles que la détection de mots-clés SUPERB.

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

#### forward[[transformers.SEWDForSequenceClassification.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sew_d/modeling_sew_d.py#L1461)

**Paramètres :**

input_values (`torch.Tensor` de forme `(batch_size, sequence_length)`) : Valeurs flottantes de la forme d'onde brute de l'entrée audio. Les valeurs peuvent être obtenues en chargeant un fichier audio `.flac` ou `.wav` dans un tableau de type `list[float]`, un `numpy.ndarray` ou un `torch.Tensor`, *par exemple* via la bibliothèque torchcodec (`pip install torchcodec`) ou la bibliothèque soundfile (`pip install soundfile`). Pour préparer le tableau en `input_values`, le [AutoProcessor](/docs/transformers/main/fr/model_doc/auto#transformers.AutoProcessor) doit être utilisé pour le bourrage (padding) et la conversion en un tenseur de type `torch.Tensor`. Voir `SEWDProcessor.__call__` pour plus de détails.

attention_mask (`torch.Tensor` de forme `(batch_size, sequence_length)`, *facultatif*) : Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans `[0, 1]` : - 1 pour les jetons qui ne sont **pas masqués**, - 0 pour les jetons qui sont **masqués**. [Qu'est-ce qu'un masque d'attention ?](../glossary#attention-mask)

labels (`torch.LongTensor` de forme `(batch_size,)`, *facultatif*) : Étiquettes pour le calcul de la perte de classification/régression de séquence. Les indices doivent être dans `[0, ..., config.num_labels - 1]`. Si `config.num_labels == 1`, une perte de régression est calculée (perte du carré moyen). Si `config.num_labels > 1`, une perte de classification est calculée (entropie croisée).

**Retourne :** [SequenceClassifierOutput](/docs/transformers/main/fr/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) ou `tuple(torch.Tensor)`

Un [SequenceClassifierOutput](/docs/transformers/main/fr/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) ou un tuple de `torch.Tensor` (si `return_dict=False` est passé ou lorsque `config.return_dict=False`) comprenant divers éléments selon la configuration ([SEWDConfig](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDConfig)) et les entrées.

La méthode forward de [SEWDForSequenceClassification](/docs/transformers/main/fr/model_doc/sew-d#transformers.SEWDForSequenceClassification) redéfinit la méthode spéciale `__call__`.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance `Module` plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

- **loss** (`torch.Tensor` de forme `(1,)`, *facultatif*, renvoyé lorsque `labels` est fourni) -- Perte de classification (ou de régression si config.num_labels==1).
- **logits** (`torch.Tensor` de forme `(batch_size, config.num_labels)`) -- Scores de classification (ou de régression si config.num_labels==1) (avant SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_hidden_states=True` est passé ou lorsque `config.output_hidden_states=True`) -- Tuple de `torch.Tensor` (un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme `(batch_size, sequence_length, hidden_size)`.

  États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
- **attentions** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_attentions=True` est passé ou lorsque `config.output_attentions=True`) -- Tuple de `torch.Tensor` (un par couche) de forme `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pondérations des attentions après le softmax d'attention, utilisées pour calculer la moyenne pondérée dans les têtes d'auto-attention.

Exemple de classification mono-étiquette :

```python
>>> import torch
>>> from transformers import AutoTokenizer, SEWDForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("BAAI/seggpt-vit-large")
>>> model = SEWDForSequenceClassification.from_pretrained("BAAI/seggpt-vit-large")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

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

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = SEWDForSequenceClassification.from_pretrained("BAAI/seggpt-vit-large", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
```

Exemple de classification multi-étiquettes :

```python
>>> import torch
>>> from transformers import AutoTokenizer, SEWDForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("BAAI/seggpt-vit-large")
>>> model = SEWDForSequenceClassification.from_pretrained("BAAI/seggpt-vit-large", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

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

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = SEWDForSequenceClassification.from_pretrained(
...     "BAAI/seggpt-vit-large", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss
```

