# FlauBERT

## Resumen

El modelo FlauBERT se propuso en el artículo [FlauBERT: Unsupervised Language Model Pre-training for French](https://huggingface.co/papers/1912.05372) de Hang Le et al. Es un modelo transformer preentrenado con un objetivo de modelado de lenguaje enmascarado (MLM) (como BERT).

El resumen del artículo es el siguiente:

*Los modelos de lenguaje se han convertido en un paso clave para lograr resultados de última generación en muchas tareas diferentes de procesamiento del lenguaje natural (NLP). Aprovechando la gran cantidad de textos sin etiquetar disponibles hoy en día, ofrecen una forma eficiente de preentrenar representaciones continuas de palabras que pueden ajustarse para una tarea posterior, junto con su contextualización a nivel de oración. Esto se ha demostrado ampliamente para el inglés utilizando representaciones contextualizadas (Dai y Le, 2015; Peters et al., 2018; Howard y Ruder, 2018; Radford et al., 2018; Devlin et al., 2019; Yang et al., 2019b). En este artículo, presentamos y compartimos FlauBERT, un modelo aprendido en un corpus francés muy grande y heterogéneo. Se entrenan modelos de diferentes tamaños utilizando el nuevo supercomputador Jean Zay del CNRS (Centro Nacional Francés para la Investigación Científica). Aplicamos nuestros modelos de lenguaje en francés a diversas tareas de NLP (clasificación de texto, parafraseo, inferencia de lenguaje natural, análisis sintáctico, desambiguación de sentido de palabras) y demostramos que, en la mayoría de los casos, superan a otros enfoques de preentrenamiento. Se comparten con la comunidad de investigación diferentes versiones de FlauBERT, así como un protocolo de evaluación unificado para las tareas posteriores, llamado FLUE (French Language Understanding Evaluation), para realizar experimentos reproducibles en NLP en francés.*

Este modelo fue aportado por [formiel](https://huggingface.co/formiel). El código original se puede encontrar [aquí](https://github.com/getalp/Flaubert).

Consejos:

- Como RoBERTa, pero sin la predicción del orden de las oraciones (es decir, entrenado solo con el objetivo MLM).

## Recursos

- [Guía de la tarea de clasificación de texto](../tasks/sequence_classification)
- [Guía de la tarea de clasificación de tokens](../tasks/token_classification)
- [Guía de la tarea de respuesta a preguntas](../tasks/question_answering)
- [Guía de la tarea de modelado de lenguaje enmascarado](../tasks/masked_language_modeling)
- [Guía de tareas de selección múltiple](../tasks/multiple_choice)

## FlaubertConfig[[transformers.FlaubertConfig]]

#### transformers.FlaubertConfig[[transformers.FlaubertConfig]]

```python
transformers.FlaubertConfig(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, pre_norm: bool = False, layerdrop: float | int = 0.0, vocab_size: int = 30145, emb_dim: int = 2048, n_layers: int = 12, n_heads: int = 16, dropout: float | int = 0.1, attention_dropout: float | int = 0.1, gelu_activation: bool = True, sinusoidal_embeddings: bool = False, causal: bool = False, asm: bool = False, n_langs: int = 1, use_lang_emb: bool = True, max_position_embeddings: int = 512, embed_init_std: float = 0.02209708691207961, layer_norm_eps: float = 1e-12, init_std: float = 0.02, bos_index: int = 0, eos_index: int = 1, pad_index: int = 2, unk_index: int = 3, mask_index: int = 5, is_encoder: bool = True, summary_type: str = 'first', summary_use_proj: bool = True, summary_activation: str | None = None, summary_proj_to_labels: bool = True, summary_first_dropout: float | int = 0.1, start_n_top: int = 5, end_n_top: int = 5, mask_token_id: int = 0, lang_id: int = 0, pad_token_id: int | None = 2, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 1, tie_word_embeddings: bool = True)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/configuration_flaubert.py#L24)

**Parámetros:**

pre_norm (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe aplicar la normalización de capas antes o después de la capa de avance hacia adelante que sigue a la atención en cada capa (Vaswani et al., Tensor2Tensor for Neural Machine Translation. 2018)

layerdrop (`Union[float, int]`, *opcional*, valor predeterminado `0.0`) : La probabilidad de LayerDrop. Consulte el [artículo de LayerDrop](see https://huggingface.co/papers/1909.11556) para obtener más detalles.

vocab_size (`int`, *opcional*, valor predeterminado `30145`) : Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse mediante `input_ids`.

emb_dim (`int`, *opcional*, valor predeterminado 2048) : La dimensionalidad de la capa de incrustación.

n_layers (`int`, *opcional*, valor predeterminado `12`) : Número de capas ocultas en el decodificador del Transformer.

n_heads (`int`, *opcional*, valor predeterminado `16`) : Número de cabezas de atención para cada capa de atención en el decodificador del Transformer.

dropout (`Union[float, int]`, *opcional*, valor predeterminado `0.1`) : La proporción para todas las capas de dropout.

attention_dropout (`Union[float, int]`, *opcional*, valor predeterminado `0.1`) : La proporción de dropout para las probabilidades de atención.

gelu_activation (`bool`, *opcional*, valor predeterminado: True) : Si se debe usar la función de activación GeLU.

sinusoidal_embeddings (`bool`, *opcional*, valor predeterminado `False`) : Indica si se deben usar incrustaciones posicionales sinusoidales en lugar de incrustaciones posicionales absolutas.

causal (`bool`, *opcional*, valor predeterminado `False`) : Indica si el modelo debe comportarse de manera causal. Los modelos causales utilizan una máscara de atención triangular para atender únicamente al contexto del lado izquierdo, en lugar de un contexto bidireccional.

asm (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe usar una capa de proyección de log softmax adaptativo en lugar de una capa lineal para la capa de predicción.

n_langs (`int`, *opcional*, valor predeterminado: 1) : El número de idiomas que maneja el modelo. Establecerlo en 1 para modelos monolingües.

use_lang_emb (`bool`, *opcional*, valor predeterminado `True`) : Si se deben usar embeddings de idioma. Algunos modelos utilizan embeddings de idioma adicionales, consulte [la página de modelos multilingües](http://huggingface.co/transformers/multilingual.html#xlm-language-embeddings) para obtener información sobre cómo usarlos.

embed_init_std (`float`, *opcional*, valor predeterminado 2048^-0.5) : La desviación estándar de truncated_normal_initializer para inicializar las matrices de incrustación.

max_position_embeddings (`int`, *opcional*, valor predeterminado `512`) : La longitud máxima de secuencia con la que se podría utilizar este modelo.

embed_init_std (`float`, *opcional*, valor predeterminado `2048**-0.5`) : Desviación estándar del inicializador para las capas de incrustación.

layer_norm_eps (`float`, *opcional*, valor predeterminado `1e-12`) : El epsilon utilizado por las capas de normalización de capas.

init_std (`float`, *opcional*, valor predeterminado `0.02`) : La desviación estándar de truncated_normal_initializer para inicializar todas las matrices de pesos.

bos_index (`int`, *opcional*, valor predeterminado 0) : El índice del token de inicio de oración en el vocabulario.

eos_index (`int`, *opcional*, valor predeterminado 1) : El índice del token de fin de oración en el vocabulario.

pad_index (`int`, *opcional*, valor predeterminado 2) : El índice del token de relleno en el vocabulario.

unk_index (`int`, *opcional*, valor predeterminado: 3) : El índice del token desconocido en el vocabulario.

mask_index (`int`, *opcional*, valor predeterminado 5) : El índice del token de enmascaramiento en el vocabulario.

is_encoder (`bool`, *opcional*, valor predeterminado: True) : Indica si el modelo se utiliza como codificador.

summary_type (`string`, *opcional*, valor predeterminado "first") : Argumento utilizado al realizar el resumen de la secuencia. Se usa en los modelos de clasificación de secuencias y de selección múltiple. Debe ser una de las siguientes opciones: - `"last"`: Toma el estado oculto del último token (como en XLNet). - `"first"`: Toma el estado oculto del primer token (como en BERT). - `"mean"`: Toma la media de los estados ocultos de todos los tokens. - `"cls_index"`: Proporcione un Tensor con la posición del token de clasificación (como en GPT/GPT-2). - `"attn"`: No implementado actualmente, usa atención multi-cabeza.

summary_use_proj (`bool`, *opcional*, valor predeterminado `True`) : Argumento utilizado al realizar un resumen de secuencia. Se usa en los modelos de clasificación de secuencias y de selección múltiple. Indica si se debe o no añadir una proyección después de la extracción del vector.

summary_activation (`str`, *opcional*) : Argumento utilizado al realizar un resumen de secuencia. Se usa en los modelos de clasificación de secuencias y de selección múltiple. Pasa `"tanh"` para aplicar una activación tanh a la salida; cualquier otro valor resultará en que no se aplique ninguna activación.

summary_proj_to_labels (`bool`, *opcional*, valor predeterminado `True`) : Se utiliza en los modelos de clasificación de secuencias y de selección múltiple. Indica si las salidas de la proyección deben tener `config.num_labels` o `config.hidden_size` clases.

summary_first_dropout (`float`, *opcional*, valor predeterminado 0.1) : Se utiliza en los modelos de clasificación de secuencias y de selección múltiple. La proporción de dropout que se aplicará después de la proyección y la activación.

start_n_top (`int`, *opcional*, valor predeterminado 5) : Se utiliza en el script de evaluación de SQuAD.

end_n_top (`int`, *opcional*, valor predeterminado 5) : Se utiliza en el script de evaluación de SQuAD.

mask_token_id (`int`, *opcional*, valor predeterminado 0) : Parámetro agnóstico al modelo para identificar tokens enmascarados al generar texto en un contexto de MLM.

lang_id (`int`, *opcional*, valor predeterminado: 1) : El ID del idioma utilizado por el modelo. Este parámetro se emplea al generar texto en un idioma determinado.

pad_token_id (`int`, *opcional*, valor predeterminado `2`) : Id del token utilizado para el relleno en el vocabulario.

bos_token_id (`int`, *opcional*, valor predeterminado `0`) : Id de token utilizado para el inicio de la secuencia en el vocabulario.

eos_token_id (`Union[int, list[int]]`, *opcional*, valor predeterminado `1`) : Id del token utilizado para el fin de la secuencia en el vocabulario.

tie_word_embeddings (`bool`, *opcional*, valor predeterminado `True`) : Indica si se deben vincular las incrustaciones de pesos según el mapeo `tied_weights_keys` del modelo.

Esta es la clase de configuración para almacenar la configuración de un FlaubertModel. Se utiliza para instanciar un modelo Flaubert según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de [flaubert/flaubert_base_uncased](https://huggingface.co/flaubert/flaubert_base_uncased)

Los objetos de configuración heredan de [PreTrainedConfig](/docs/transformers/v5.23.0/es/main_classes/configuration#transformers.PreTrainedConfig) y se pueden utilizar para controlar las salidas del modelo. Consulte la documentación de [PreTrainedConfig](/docs/transformers/v5.23.0/es/main_classes/configuration#transformers.PreTrainedConfig) para obtener más información.

## FlaubertTokenizer[[transformers.FlaubertTokenizer]]

#### transformers.FlaubertTokenizer[[transformers.FlaubertTokenizer]]

```python
transformers.FlaubertTokenizer(vocab_file, merges_file, do_lowercase = False, unk_token = '<unk>', bos_token = '<s>', sep_token = '</s>', pad_token = '<pad>', cls_token = '</s>', mask_token = '<special1>', additional_special_tokens = ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>'], lang2id = None, id2lang = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/tokenization_flaubert.py#L121)

**Parámetros:**

vocab_file (`str`) : Archivo de vocabulario.

merges_file (`str`) : Fusiona el archivo.

do_lowercase (`bool`, *opcional*, valor predeterminado `False`) : Controla la conversión a minúsculas.

unk_token (`str`, *opcional*, valor predeterminado `"<unk>"`) : El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar.

bos_token (`str`, *opcional*, valor predeterminado `"<s>"`) : El token de inicio de secuencia que se utilizó durante el preentrenamiento. Puede usarse como token de clasificador de secuencias. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es `cls_token`.

sep_token (`str`, *opcional*, valor predeterminado `"</s>"`) : El token separador, que se utiliza al construir una secuencia a partir de varias secuencias, por ejemplo, dos secuencias para la clasificación de secuencias o un texto y una pregunta para la respuesta a preguntas. También se utiliza como el último token de una secuencia construida con tokens especiales.

pad_token (`str`, *opcional*, valor predeterminado `"<pad>"`) : El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes.

cls_token (`str`, *opcional*, valor predeterminado `"</s>"`) : El token clasificador que se utiliza al realizar clasificación de secuencias (clasificación de la secuencia completa en lugar de clasificación por token). Es el primer token de la secuencia cuando se construye con tokens especiales.

mask_token (`str`, *opcional*, valor predeterminado `"<special1>"`) : El token utilizado para enmascarar valores. Este es el token que se emplea al entrenar este modelo con modelado de lenguaje enmascarado. Es el token que el modelo intentará predecir.

additional_special_tokens (`List[str]`, *opcional*, valor predeterminado `['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']`) : Lista de tokens especiales adicionales.

lang2id (`Dict[str, int]`, *opcional*) : Diccionario que mapea los identificadores de cadenas de idiomas a sus IDs.

id2lang (`Dict[int, str]`, *opcional*) : Diccionario que mapea los IDs de idioma a sus identificadores de cadena.

Construye un tokenizador de Flaubert. Basado en Byte-Pair Encoding. El proceso de tokenización es el siguiente:

- Preprocesamiento y tokenización de Moses.
- Normalizando todo el texto de entrada.
- Los argumentos `special_tokens` y la función `set_special_tokens` se pueden utilizar para añadir símbolos adicionales (como "__classify__") a un vocabulario.
- El argumento `do_lowercase` controla la conversión a minúsculas (se establece automáticamente para los vocabularios preentrenados).

Este tokenizador hereda de [PreTrainedTokenizer](/docs/transformers/v5.23.0/es/main_classes/tokenizer#transformers.PythonBackend), que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.

#### build_inputs_with_special_tokens[[transformers.FlaubertTokenizer.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list[int], token_ids_1: list[int] | None = None)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/tokenization_flaubert.py#L430)

**Parámetros:**

token_ids_0 (`List[int]`) : Lista de IDs a los que se les añadirán los tokens especiales.

token_ids_1 (`List[int]`, *opcional*) : Lista opcional de IDs para pares de secuencias.

**Devuelve:** `List[int]`

Lista de [ID de entrada](../glossary#input-ids) con los tokens especiales apropiados.

Construye las entradas del modelo a partir de una secuencia o de un par de secuencias para tareas de clasificación de secuencias, concatenándolas y añadiendo tokens especiales. Una secuencia de XLM tiene el siguiente formato:

- secuencia única: `<s> X </s>`
- par de secuencias: `<s> A </s> B </s>`

#### convert_tokens_to_string[[transformers.FlaubertTokenizer.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/tokenization_flaubert.py#L424)

Convierte una secuencia de tokens (cadena) en una sola cadena.

#### get_special_tokens_mask[[transformers.FlaubertTokenizer.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list[int], token_ids_1: list[int] | None = None, already_has_special_tokens: bool = False)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/tokenization_flaubert.py#L458)

**Parámetros:**

token_ids_0 (`List[int]`) : Lista de IDs.

token_ids_1 (`List[int]`, *opcional*) : Lista opcional de IDs para pares de secuencias.

already_has_special_tokens (`bool`, *opcional*, valor predeterminado `False`) : Indica si la lista de tokens ya está formateada con tokens especiales para el modelo.

**Devuelve:** `List[int]`

Una lista de enteros en el rango [0, 1]: 1 para un token especial, 0 para un token de secuencia.

Obtiene los ids de secuencia de una lista de tokens a la que no se le han añadido tokens especiales. Este método se llama al añadir tokens especiales mediante el método `prepare_for_model` del tokenizer.

## FlaubertModel[[transformers.FlaubertModel]]

#### transformers.FlaubertModel[[transformers.FlaubertModel]]

```python
transformers.FlaubertModel(config: FlaubertConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L690)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

El modelo Flaubert básico que genera estados ocultos sin ninguna cabeza específica en la parte superior.

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, lengths: typing.Optional[torch.LongTensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L763)

**Parámetros:**

input_ids (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada. Los índices se pueden obtener mediante [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.n_positions - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar `attention_mask` para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`:

cache (`dict[str, torch.Tensor]`, *opcional*) : Diccionario de cadenas a `torch.Tensor` que contiene los estados ocultos precalculados (claves y valores en los bloques de atención) tal como los calcula el modelo (ver la salida `cache` a continuación). Se puede usar para acelerar la decodificación secuencial. El objeto diccionario se modificará in situ durante la pasada hacia adelante para añadir los estados ocultos recién calculados.

inputs_embeds (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** [BaseModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.BaseModelOutput) o `tuple(torch.Tensor)`

Un [BaseModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.BaseModelOutput) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertModel](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertModel) sobrescribe el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **last_hidden_state** (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`) -- Secuencia de estados ocultos en la salida de la última capa del modelo.
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

## FlaubertWithLMHeadModel[[transformers.FlaubertWithLMHeadModel]]

#### transformers.FlaubertWithLMHeadModel[[transformers.FlaubertWithLMHeadModel]]

```python
transformers.FlaubertWithLMHeadModel(config: FlaubertConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L940)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

El modelo transformer Flaubert con una cabeza de modelado de lenguaje en la parte superior (capa lineal con pesos vinculados a las incrustaciones de entrada).

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertWithLMHeadModel.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, lengths: typing.Optional[torch.Tensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L972)

**Parámetros:**

input_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada. Los índices se pueden obtener mediante [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.n_positions - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar `attention_mask` para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`:

cache (`dict[str, torch.Tensor]`, *opcional*) : Diccionario de cadenas a `torch.Tensor` que contiene los estados ocultos precalculados (claves y valores en los bloques de atención) tal como los calcula el modelo (ver la salida `cache` a continuación). Se puede usar para acelerar la decodificación secuencial. El objeto diccionario se modificará in situ durante la pasada hacia adelante para añadir los estados ocultos recién calculados.

inputs_embeds (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

labels (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Etiquetas para el modelado de lenguaje. Tenga en cuenta que las etiquetas **se desplazan** dentro del modelo, es decir, puede establecer `labels = input_ids` Los índices se seleccionan en `[-100, 0, ..., config.vocab_size]` Todas las etiquetas establecidas en `-100` se ignoran (se enmascaran), la pérdida solo se calcula para las etiquetas en `[0, ..., config.vocab_size]`

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** [MaskedLMOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.MaskedLMOutput) o `tuple(torch.Tensor)`

Un [MaskedLMOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.MaskedLMOutput) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertWithLMHeadModel](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertWithLMHeadModel) sobrescribe el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.Tensor` de forma `(1,)`, *opcional*, se devuelve cuando se proporciona `labels`) -- Pérdida de modelado de lenguaje enmascarado (MLM).
- **logits** (`torch.Tensor` de forma `(batch_size, sequence_length, config.vocab_size)`) -- Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

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

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertWithLMHeadModel.from_pretrained("flaubert/flaubert_base_uncased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logits
```

## FlaubertForSequenceClassification[[transformers.FlaubertForSequenceClassification]]

#### transformers.FlaubertForSequenceClassification[[transformers.FlaubertForSequenceClassification]]

```python
transformers.FlaubertForSequenceClassification(config: FlaubertConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1049)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

Modelo Flaubert con una cabeza de clasificación/regresión de secuencias en la parte superior (una capa lineal sobre la salida agrupada), por ejemplo, para tareas GLUE.

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertForSequenceClassification.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, lengths: typing.Optional[torch.Tensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1061)

**Parámetros:**

input_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada. Los índices se pueden obtener mediante [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.n_positions - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar *attention_mask* para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`.

cache (`dict[str, torch.Tensor]`, *opcional*) : Instancia de `EncoderDecoderCache` que contiene estados KV precalculados. Se puede usar para acelerar la decodificación secuencial.

inputs_embeds (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

labels (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para calcular la pérdida de clasificación/regresión de secuencia. Los índices deben estar en `[0, ..., config.num_labels - 1]`. Si `config.num_labels == 1` se calcula una pérdida de regresión (pérdida de error cuadrático medio), si `config.num_labels > 1` se calcula una pérdida de clasificación (entropía cruzada).

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** [SequenceClassifierOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) o `tuple(torch.Tensor)`

Un [SequenceClassifierOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertForSequenceClassification](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertForSequenceClassification) reemplaza el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.Tensor` de forma `(1,)`, *opcional*, se devuelve cuando se proporciona `labels`) -- Pérdida de clasificación (o de regresión si config.num_labels==1).
- **logits** (`torch.Tensor` de forma `(batch_size, config.num_labels)`) -- Puntuaciones de clasificación (o de regresión si config.num_labels==1) (antes de SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo de clasificación de una sola etiqueta:

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

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased")

>>> 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 = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", num_labels=num_labels)

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

Ejemplo de clasificación multietiqueta:

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

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", 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 = FlaubertForSequenceClassification.from_pretrained(
...     "flaubert/flaubert_base_uncased", 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
```

## FlaubertForMultipleChoice[[transformers.FlaubertForMultipleChoice]]

#### transformers.FlaubertForMultipleChoice[[transformers.FlaubertForMultipleChoice]]

```python
transformers.FlaubertForMultipleChoice(config: FlaubertConfig, *inputs, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1496)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

El modelo Flaubert con una cabeza de clasificación de opción múltiple en la parte superior (una capa lineal sobre la salida agrupada y un softmax), por ejemplo, para las tareas RocStories/SWAG.

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertForMultipleChoice.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, lengths: typing.Optional[torch.Tensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1507)

**Parámetros:**

input_ids (`torch.LongTensor` de forma `(batch_size, num_choices, sequence_length)`) : Índices de los tokens de la secuencia de entrada en el vocabulario. Los índices se pueden obtener usando [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, num_choices, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas, que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.LongTensor` de forma `(batch_size, num_choices, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.LongTensor` de forma `(batch_size, num_choices, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.max_position_embeddings - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar *attention_mask* para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`.

cache (`dict[str, torch.Tensor]`, *opcional*) : Instancia de `EncoderDecoderCache` que contiene estados KV precalculados. Se puede usar para acelerar la decodificación secuencial.

inputs_embeds (`torch.Tensor` de forma `(batch_size, num_choices, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

labels (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para calcular la pérdida de clasificación de opción múltiple. Los índices deben estar en `[0, ..., num_choices-1]`, donde `num_choices` es el tamaño de la segunda dimensión de los tensores de entrada. (Véase `input_ids` arriba)

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** [MultipleChoiceModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.MultipleChoiceModelOutput) o `tuple(torch.Tensor)`

Un [MultipleChoiceModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.MultipleChoiceModelOutput) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertForMultipleChoice](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertForMultipleChoice) reemplaza el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.Tensor` de forma *(1,)*, *opcional*, se devuelve cuando se proporciona `labels`) -- Pérdida de clasificación.
- **logits** (`torch.Tensor` de forma `(batch_size, num_choices)`) -- *num_choices* es la segunda dimensión de los tensores de entrada. (ver *input_ids* arriba).

  Puntuaciones de clasificación (antes de SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

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

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForMultipleChoice.from_pretrained("flaubert/flaubert_base_uncased")

>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0)  # choice0 is correct (according to Wikipedia ;)), batch size 1

>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels)  # batch size is 1

>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logits
```

## FlaubertForTokenClassification[[transformers.FlaubertForTokenClassification]]

#### transformers.FlaubertForTokenClassification[[transformers.FlaubertForTokenClassification]]

```python
transformers.FlaubertForTokenClassification(config: FlaubertConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1151)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

El transformer Flaubert con una cabeza de clasificación de tokens en la parte superior (una capa lineal sobre la salida de los estados ocultos), por ejemplo, para tareas de reconocimiento de entidades nombradas (NER).

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertForTokenClassification.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, lengths: typing.Optional[torch.Tensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1163)

**Parámetros:**

input_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada. Los índices se pueden obtener mediante [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.n_positions - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar *attention_mask* para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`.

cache (`dict[str, torch.Tensor]`, *opcional*) : Instancia de `EncoderDecoderCache` que contiene estados KV precalculados. Se puede usar para acelerar la decodificación secuencial.

inputs_embeds (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

labels (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Etiquetas para calcular la pérdida de clasificación de tokens. Los índices deben estar en `[0, ..., config.num_labels - 1]`.

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** [TokenClassifierOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.TokenClassifierOutput) o `tuple(torch.Tensor)`

Un [TokenClassifierOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.TokenClassifierOutput) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertForTokenClassification](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertForTokenClassification) sobrescribe el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.Tensor` de forma `(1,)`, *opcional*, se devuelve cuando se proporciona `labels`) -- Pérdida de clasificación.
- **logits** (`torch.Tensor` de forma `(batch_size, sequence_length, config.num_labels)`) -- Puntuaciones de clasificación (antes de SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

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

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForTokenClassification.from_pretrained("flaubert/flaubert_base_uncased")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

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

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
```

## FlaubertForQuestionAnsweringSimple[[transformers.FlaubertForQuestionAnsweringSimple]]

#### transformers.FlaubertForQuestionAnsweringSimple[[transformers.FlaubertForQuestionAnsweringSimple]]

```python
transformers.FlaubertForQuestionAnsweringSimple(config: FlaubertConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1242)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

Modelo Flaubert con una cabeza de clasificación de tramos en la parte superior para tareas de respuesta a preguntas extractivas como SQuAD (una capa lineal sobre la salida de los estados ocultos para calcular `span start logits` y `span end logits`).

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertForQuestionAnsweringSimple.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, lengths: typing.Optional[torch.Tensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, start_positions: typing.Optional[torch.Tensor] = None, end_positions: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1252)

**Parámetros:**

input_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada. Los índices se pueden obtener mediante [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.n_positions - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar *attention_mask* para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`.

cache (`dict[str, torch.Tensor]`, *opcional*) : Instancia de `EncoderDecoderCache` que contiene estados KV precalculados. Se puede usar para acelerar la decodificación secuencial.

inputs_embeds (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

start_positions (`torch.Tensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para la posición (índice) del inicio del tramo etiquetado para calcular la pérdida de clasificación de tokens. Las posiciones se limitan a la longitud de la secuencia (`sequence_length`). Las posiciones fuera de la secuencia no se tienen en cuenta para calcular la pérdida.

end_positions (`torch.Tensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para la posición (índice) del final del tramo etiquetado para calcular la pérdida de clasificación de tokens. Las posiciones se limitan a la longitud de la secuencia (`sequence_length`). Las posiciones fuera de la secuencia no se tienen en cuenta para calcular la pérdida.

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** [QuestionAnsweringModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.QuestionAnsweringModelOutput) o `tuple(torch.Tensor)`

Un [QuestionAnsweringModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.modeling_outputs.QuestionAnsweringModelOutput) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertForQuestionAnsweringSimple](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertForQuestionAnsweringSimple) sobrescribe el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.Tensor` de forma `(1,)`, *opcional*, se devuelve cuando se proporciona `labels`) -- La pérdida total de extracción de tramos es la suma de una Entropía Cruzada para las posiciones de inicio y fin.
- **start_logits** (`torch.Tensor` de forma `(batch_size, sequence_length)`) -- Puntuaciones de inicio de tramo (antes de SoftMax).
- **end_logits** (`torch.Tensor` de forma `(batch_size, sequence_length)`) -- Puntuaciones de fin de tramo (antes de SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

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

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_uncased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...
```

## FlaubertForQuestionAnswering[[transformers.FlaubertForQuestionAnswering]]

#### transformers.FlaubertForQuestionAnswering[[transformers.FlaubertForQuestionAnswering]]

```python
transformers.FlaubertForQuestionAnswering(config: FlaubertConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1377)

**Parámetros:**

config ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

El transformer Flaubert con una cabeza de clasificación de tramos en la parte superior para tareas de respuesta a preguntas extractivas como SQuAD (una capa lineal sobre la salida de los estados ocultos para calcular `span start logits` y `span end logits`).

Este modelo hereda de [PreTrainedModel](/docs/transformers/v5.23.0/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### forward[[transformers.FlaubertForQuestionAnswering.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, langs: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, lengths: typing.Optional[torch.Tensor] = None, cache: dict[str, torch.Tensor] | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, start_positions: typing.Optional[torch.Tensor] = None, end_positions: typing.Optional[torch.Tensor] = None, is_impossible: typing.Optional[torch.Tensor] = None, cls_index: typing.Optional[torch.Tensor] = None, p_mask: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/flaubert/modeling_flaubert.py#L1387)

**Parámetros:**

input_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada. Los índices se pueden obtener mediante [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer). Consulte [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) y [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/es/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) para obtener más detalles. [¿Qué son los IDs de entrada?](../glossary#input-ids)

attention_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de la máscara seleccionados en `[0, 1]`:  - 1 para tokens que **no están enmascarados**, - 0 para tokens que **están enmascarados**.  [¿Qué son las máscaras de atención?](../glossary#attention-mask)

langs (`torch.LongTensor` de forma `(batch_size, sequence_length)`, *opcional*) : Una secuencia paralela de tokens que se utiliza para indicar el idioma de cada token en la entrada. Los índices son ids de idiomas que se pueden obtener a partir de los nombres de los idiomas mediante dos mapeos de conversión proporcionados en la configuración del modelo (solo se proporciona para modelos multilingües). Más precisamente, el mapeo de *nombre de idioma a id de idioma* está en `model.config.lang2id` (que es un diccionario de string a int) y el mapeo de *id de idioma a nombre de idioma* está en `model.config.id2lang` (diccionario de int a string). Consulte los ejemplos de uso detallados en la [documentación multilingüe](../multilingual).

token_type_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en `[0, 1]`:  - 0 corresponde a un token de *oración A*, - 1 corresponde a un token de *oración B*.  [¿Qué son los IDs de tipo de token?](../glossary#token-type-ids)

position_ids (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Índices de las posiciones de los tokens de cada secuencia de entrada en las incrustaciones de posición. Seleccionados en el rango `[0, config.n_positions - 1]`.  [¿Qué son los IDs de posición?](../glossary#position-ids)

lengths (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Longitud de cada oración que se puede usar para evitar realizar atención en los índices de tokens de relleno. También se puede usar *attention_mask* para obtener el mismo resultado (ver arriba), se mantiene aquí por compatibilidad. Índices seleccionados en `[0, ..., input_ids.size(-1)]`.

cache (`dict[str, torch.Tensor]`, *opcional*) : Instancia de `EncoderDecoderCache` que contiene estados KV precalculados. Se puede usar para acelerar la decodificación secuencial.

inputs_embeds (`torch.Tensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) : Opcionalmente, en lugar de pasar `input_ids`, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de `input_ids` en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.

start_positions (`torch.Tensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para la posición (índice) del inicio del tramo etiquetado para calcular la pérdida de clasificación de tokens. Las posiciones se limitan a la longitud de la secuencia (`sequence_length`). Las posiciones fuera de la secuencia no se tienen en cuenta para calcular la pérdida.

end_positions (`torch.Tensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para la posición (índice) del final del tramo etiquetado para calcular la pérdida de clasificación de tokens. Las posiciones se limitan a la longitud de la secuencia (`sequence_length`). Las posiciones fuera de la secuencia no se tienen en cuenta para calcular la pérdida.

is_impossible (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Etiquetas que indican si una pregunta tiene respuesta o no (SQuAD 2.0)

cls_index (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para la posición (índice) del token de clasificación que se utilizará como entrada para calcular la plausibilidad de la respuesta.

p_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Máscara opcional de tokens que no pueden estar en las respuestas (p. ej. [CLS], [PAD], ...). 1.0 significa que el token debe enmascararse. 0.0 significa que el token no está enmascarado.

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/v5.23.0/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** `FlaubertForQuestionAnsweringOutput` o `tuple(torch.Tensor)`

Un `FlaubertForQuestionAnsweringOutput` o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FlaubertConfig](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertConfig)) y las entradas.

El método forward de [FlaubertForQuestionAnswering](/docs/transformers/v5.23.0/es/model_doc/flaubert#transformers.FlaubertForQuestionAnswering) sobrescribe el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.Tensor` de forma `(1,)`, *opcional*, se devuelve si se proporcionan tanto `start_positions` como `end_positions`) -- Pérdida de clasificación como la suma de las pérdidas de clasificación del token de inicio, del token de finalización (y de is_impossible si se proporciona).
- **start_top_log_probs** (`torch.Tensor` de forma `(batch_size, config.start_n_top)`, *opcional*, se devuelve si no se proporciona `start_positions` o `end_positions`) -- Probabilidades logarítmicas para las config.start_n_top posibilidades de tokens de inicio (beam-search).
- **start_top_index** (`torch.LongTensor` de forma `(batch_size, config.start_n_top)`, *opcional*, se devuelve si no se proporciona `start_positions` o `end_positions`) -- Índices de las config.start_n_top posibilidades iniciales de tokens (búsqueda por haz).
- **end_top_log_probs** (`torch.Tensor` de forma `(batch_size, config.start_n_top * config.end_n_top)`, *opcional*, se devuelve si no se proporciona `start_positions` o `end_positions`) -- Probabilidades logarítmicas para las `config.start_n_top * config.end_n_top` posibilidades de tokens finales (beam-search).
- **end_top_index** (`torch.LongTensor` de forma `(batch_size, config.start_n_top * config.end_n_top)`, *opcional*, se devuelve si no se proporciona `start_positions` o `end_positions`) -- Índices de las `config.start_n_top * config.end_n_top` posibilidades de tokens finales más probables (búsqueda por haz).
- **cls_logits** (`torch.Tensor` de forma `(batch_size,)`, *opcional*, se devuelve si no se proporciona `start_positions` o `end_positions`) -- Probabilidades logarítmicas para la etiqueta `is_impossible` de las respuestas.
- **hidden_states** (`tuple[torch.Tensor]`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **attentions** (`tuple[torch.Tensor]`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

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

>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/xlm-mlm-en-2048")
>>> model = FlaubertForQuestionAnswering.from_pretrained("FacebookAI/xlm-mlm-en-2048")

>>> input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(
...     0
... )  # Batch size 1
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])

>>> outputs = model(input_ids, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss
```

