Transformers documentation

LXMERT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo se publicó en HF papers el 2019-08-20 y se contribuyó a Hugging Face Transformers el 2020-11-16.

LXMERT

Resumen

El modelo LXMERT fue propuesto en LXMERT: Learning Cross-Modality Encoder Representations from Transformers por Hao Tan & Mohit Bansal. Es una serie de codificadores transformer bidireccionales (uno para la modalidad visual, uno para la modalidad lingüística y luego uno para fusionar ambas modalidades) preentrenados utilizando una combinación de objetivos de modelado de lenguaje enmascarado, alineación de texto visual-lingüístico, regresión de características ROI, modelado de atributos visuales enmascarados, modelado de objetos visuales enmascarados y respuesta a preguntas visuales. El preentrenamiento consiste en múltiples conjuntos de datos multimodales: MSCOCO, Visual-Genome + Visual-Genome Question Answering, VQA 2.0 y GQA.

El resumen del artículo es el siguiente:

El razonamiento visual y lingüístico requiere comprender los conceptos visuales, la semántica del lenguaje y, lo más importante, la alineación y las relaciones entre estas dos modalidades. Por lo tanto, proponemos el marco LXMERT (Learning Cross-Modality Encoder Representations from Transformers) para aprender estas conexiones entre visión y lenguaje. En LXMERT, construimos un modelo Transformer a gran escala que consta de tres codificadores: un codificador de relaciones de objetos, un codificador de lenguaje y un codificador de multimodalidad. A continuación, para dotar a nuestro modelo de la capacidad de conectar la semántica de la visión y el lenguaje, preentrenamos el modelo con grandes cantidades de pares de imagen y oración, mediante cinco tareas de preentrenamiento diversas y representativas: modelado de lenguaje enmascarado, predicción de objetos enmascarados (regresión de características y clasificación de etiquetas), correspondencia de multimodalidad y respuesta a preguntas sobre imágenes. Estas tareas ayudan a aprender tanto las relaciones intra-modalidad como las relaciones inter-modalidad. Después de ajustar a partir de nuestros parámetros preentrenados, nuestro modelo logra resultados de última generación en dos conjuntos de datos de respuesta a preguntas visuales (es decir, VQA y GQA). También demostramos la generalizabilidad de nuestro modelo de multimodalidad preentrenado adaptándolo a una tarea de razonamiento visual desafiante, NLVR, y mejoramos el mejor resultado anterior en un 22% absoluto (del 54% al 76%). Por último, demostramos estudios de abstracción detallados para probar que tanto nuestros nuevos componentes del modelo como nuestras estrategias de preentrenamiento contribuyen significativamente a nuestros sólidos resultados; y también presentamos varias visualizaciones de atención para los diferentes codificadores

Este modelo fue aportado por eltoto1219. El código original se puede encontrar aquí.

Consejos de uso

  • Las cajas delimitadoras no son necesarias para usar en las representaciones de características visuales; cualquier tipo de características visuales-espaciales funcionará.
  • Los estados ocultos del lenguaje y los estados ocultos visuales que LXMERT genera se pasan por la capa de multimodalidad cruzada, por lo que contienen información de ambas modalidades. Para acceder a una modalidad que solo atiende a sí misma, seleccione los estados ocultos de visión/lenguaje de la primera entrada de la tupla.
  • La atención del codificador bidireccional de cross-modality solo devuelve valores de atención cuando la modalidad de lenguaje se utiliza como entrada y la modalidad de visión se utiliza como vector de contexto. Además, aunque el codificador de cross-modality contiene autoatención para cada modalidad respectiva y cross-atención, solo se devuelve la cross-atención y se descartan ambas salidas de autoatención.

Recursos

LxmertConfig

clase transformers.LxmertConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 30522hidden_size: int = 768num_attention_heads: int = 12num_qa_labels: int = 9500num_object_labels: int = 1600num_attr_labels: int = 400intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02l_layers: int = 9x_layers: int = 5r_layers: int = 5visual_feat_dim: int = 2048visual_pos_dim: int = 4visual_loss_normalizer: float = 6.67task_matched: bool = Truetask_mask_lm: bool = Truetask_obj_predict: bool = Truetask_qa: bool = Truevisual_obj_loss: bool = Truevisual_attr_loss: bool = Truevisual_feat_loss: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = True )

Parámetros

  • vocab_size (int, opcional, valor predeterminado 30522) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse mediante input_ids.
  • hidden_size (int, opcional, valor predeterminado 768) — Dimensión de las representaciones ocultas.
  • num_attention_heads (int, opcional, valor predeterminado 12) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer.
  • num_qa_labels (int, opcional, valor predeterminado 9500) — Representa el número total de etiquetas diferentes de respuesta a preguntas (QA) que hay. Si se utiliza más de un conjunto de datos con QA, el usuario deberá tener en cuenta el número total de etiquetas que tienen todos los conjuntos de datos en conjunto.
  • num_object_labels (int, opcional, valor predeterminado 1600) — Representa el número total de objetos semánticamente únicos que lxmert podrá clasificar como pertenecientes a una característica de objeto agrupada.
  • num_attr_labels (int, opcional, valor predeterminado 400) — Representa el número total de atributos semánticamente únicos que lxmert podrá clasificar como poseídos por una característica de objeto agrupada.
  • intermediate_size (int, opcional, valor predeterminado 3072) — Dimensión de las representaciones del MLP.
  • hidden_act (str, opcional, valor predeterminado gelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, "gelu", "relu", "silu", etc.
  • hidden_dropout_prob (Union[float, int], opcional, valor predeterminado 0.1) — La probabilidad de dropout para todas las capas totalmente conectadas en las incrustaciones, el codificador y el pooler.
  • attention_probs_dropout_prob (Union[float, int], opcional, valor predeterminado 0.1) — La proporción de dropout para las probabilidades de atención.
  • max_position_embeddings (int, opcional, valor predeterminado 512) — La longitud máxima de secuencia con la que se podría utilizar este modelo.
  • type_vocab_size (int, opcional, valor predeterminado 2) — El tamaño del vocabulario de token_type_ids.
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • l_layers (int, opcional, valor predeterminado 9) — Número de capas ocultas en el codificador de lenguaje Transformer.
  • x_layers (int, opcional, valor predeterminado 5) — Número de capas ocultas en el codificador de Transformer de multimodalidad cruzada.
  • r_layers (int, opcional, valor predeterminado 5) — Número de capas ocultas en el codificador visual Transformer.
  • visual_feat_dim (int, opcional, valor predeterminado 2048) — Representa la última dimensión de las características de objetos agrupados que se utilizan como entrada para el modelo, lo que representa el tamaño de cada característica de objeto.
  • visual_pos_dim (int, opcional, valor predeterminado 4) — Representa el número de características espaciales que se combinan con las características visuales. El valor predeterminado es 4 porque, con mayor frecuencia, esto representa la ubicación de un cuadro delimitador, es decir, (x, y, ancho, alto).
  • visual_loss_normalizer (float, opcional, valor predeterminado 6.67) — Representa el factor de escala por el cual se multiplica cada pérdida visual si, durante el preentrenamiento, se decide entrenar con múltiples objetivos de pérdida basados en visión.
  • task_matched (bool, opcional, valor predeterminado True) — Esta tarea se utiliza para el emparejamiento de oraciones e imágenes. Si la oración describe correctamente la imagen, la etiqueta será 1. Si la oración no describe correctamente la imagen, la etiqueta será 0.
  • task_mask_lm (bool, opcional, valor predeterminado True) — Indica si se debe añadir el modelado de lenguaje enmascarado (tal como se utiliza en modelos de preentrenamiento como BERT) al objetivo de pérdida.
  • task_obj_predict (bool, opcional, valor predeterminado True) — Indica si se debe añadir la predicción de objetos, la predicción de atributos y la regresión de características al objetivo de pérdida.
  • task_qa (bool, opcional, valor predeterminado True) — Si se debe o no añadir la pérdida de respuesta a preguntas al objetivo
  • visual_obj_loss (bool, opcional, valor predeterminado True) — Si se calcula o no la función de pérdida de predicción de objetos
  • visual_attr_loss (bool, opcional, valor predeterminado True) — Si se calcula o no la función de pérdida de predicción de atributos
  • visual_feat_loss (bool, opcional, valor predeterminado True) — Si se calcula o no la función de pérdida de regresión de características
  • pad_token_id (int, opcional) — Id del token utilizado para el relleno en el vocabulario.
  • bos_token_id (int, opcional) — Id del token utilizado para el inicio de la secuencia en el vocabulario.
  • eos_token_id (Union[int, list[int]], opcional) — Id del token utilizado para el fin de secuencia en el vocabulario.
  • tie_word_embeddings (bool, opcional, valor predeterminado True) — Si se deben vincular las matrices de pesos de embeddings según el mapeo tied_weights_keys del modelo.

Esta es la clase de configuración para almacenar la configuración de un LxmertModel. Se utiliza para instanciar un modelo Lxmert 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 unc-nlp/lxmert-base-uncased

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

LxmertTokenizer

clase transformers.BertTokenizer

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )

Parámetros

  • vocab (str o dict[str, int], opcional) — Diccionario de vocabulario personalizado. Si no se proporciona, el vocabulario se carga desde vocab_file.
  • do_lower_case (bool, opcional, valor predeterminado True) — Si se debe convertir la entrada a minúsculas al tokenizar.
  • 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.
  • sep_token (str, opcional, valor predeterminado "[SEP]") — 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 "[CLS]") — 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 "[MASK]") — 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.
  • tokenize_chinese_chars (bool, opcional, valor predeterminado True) — Si se tokenizan o no los caracteres chinos.
  • strip_accents (bool, opcional) — Indica si se deben eliminar todas las tildes. Si no se especifica esta opción, se determinará en función del valor de lowercase (como en BERT original).

Construye un tokenizador de BERT (respaldado por la biblioteca tokenizers de HuggingFace). Basado en WordPiece.

Este tokenizador hereda de TokenizersBackend, 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.

Salidas específicas de Lxmert

clase transformers.models.lxmert.modeling_lxmert.LxmertModelOutput

< >

( language_output: typing.Optional[torch.Tensor] = Nonevision_output: typing.Optional[torch.Tensor] = Nonepooled_output: typing.Optional[torch.Tensor] = Nonelanguage_hidden_states: tuple[torch.Tensor] | None = Nonevision_hidden_states: tuple[torch.Tensor] | None = Nonelanguage_attentions: tuple[torch.Tensor] | None = Nonevision_attentions: tuple[torch.Tensor] | None = Nonecross_encoder_attentions: tuple[torch.Tensor] | None = None )

Parámetros

  • language_output (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del codificador de lenguaje.
  • vision_output (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del codificador visual.
  • pooled_output (torch.Tensor de forma (batch_size, hidden_size)) — Estado oculto de la última capa del primer token de la secuencia (clasificación, CLS, token) procesado adicionalmente por una capa Linear y una función de activación Tanh. La capa Linear
  • language_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • vision_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 las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • language_attentions (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • vision_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • cross_encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Las salidas de Lxmert que contienen los últimos estados ocultos, las salidas agrupadas y las probabilidades de atención para los codificadores de lenguaje, visual y de multimodalidad cruzada. (Nota: el codificador visual en Lxmert se denomina codificador de “relación”)

clase transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneprediction_logits: typing.Optional[torch.Tensor] = Nonecross_relationship_score: typing.Optional[torch.Tensor] = Nonequestion_answering_score: typing.Optional[torch.Tensor] = Nonelanguage_hidden_states: tuple[torch.Tensor] | None = Nonevision_hidden_states: tuple[torch.Tensor] | None = Nonelanguage_attentions: tuple[torch.Tensor] | None = Nonevision_attentions: tuple[torch.Tensor] | None = Nonecross_encoder_attentions: tuple[torch.Tensor] | None = None )

Parámetros

  • loss (*optional*, returned when labels is provided, torch.Tensor of shape (1,)) — Pérdida total como la suma de la pérdida de modelado de lenguaje enmascarado y la pérdida de predicción de la siguiente secuencia (clasificación).
  • prediction_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).
  • cross_relationship_score (torch.Tensor de forma (batch_size, 2)) — Puntuaciones de predicción de la cabeza de objetivo de coincidencia textual (clasificación) (puntuaciones de continuación True/False antes de SoftMax).
  • question_answering_score (torch.Tensor de forma (batch_size, n_qa_answers)) — Puntuaciones de predicción del objetivo de respuesta a preguntas (clasificación).
  • language_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • vision_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 las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • language_attentions (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • vision_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • cross_encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Tipo de salida de LxmertForPreTraining.

clase transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonequestion_answering_score: typing.Optional[torch.Tensor] = Nonelanguage_hidden_states: tuple[torch.Tensor] | None = Nonevision_hidden_states: tuple[torch.Tensor] | None = Nonelanguage_attentions: tuple[torch.Tensor] | None = Nonevision_attentions: tuple[torch.Tensor] | None = Nonecross_encoder_attentions: tuple[torch.Tensor] | None = None )

Parámetros

  • loss (*optional*, returned when labels is provided, torch.Tensor of shape (1,)) — Total loss as the sum of the masked language modeling loss and the next sequence prediction (classification) loss.k.
  • question_answering_score (torch.Tensor de forma (batch_size, n_qa_answers), opcional) — Puntuaciones de predicción del objetivo de respuesta a preguntas (clasificación).
  • language_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • vision_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 las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • language_attentions (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • vision_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • cross_encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Tipo de salida de LxmertForQuestionAnswering.

LxmertModel

clase transformers.LxmertModel

< >

( config: LxmertConfig )

Parámetros

  • config (LxmertConfig) — 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() para cargar los pesos del modelo.

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

Este modelo hereda de PreTrainedModel. Consulta 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 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.Tensor] = Nonevisual_pos: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertModelOutput or tuple(torch.Tensor)

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 usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • visual_feats (torch.Tensor de forma (batch_size, num_visual_features, visual_feat_dim)) — Esta entrada representa características visuales. Son características de objetos obtenidas mediante ROI pooling a partir de cajas delimitadoras usando un modelo faster-RCNN)

    Actualmente, la biblioteca transformers no los proporciona.

  • visual_pos (torch.Tensor de forma (batch_size, num_visual_features, visual_pos_dim)) — Esta entrada representa características espaciales correspondientes a sus características visuales relativas (mediante índice). El modelo LXMERT preentrenado espera que estas características espaciales sean cajas delimitadoras normalizadas en una escala de 0 a

    Actualmente, la biblioteca transformers no los proporciona.

  • 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 máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • visual_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 máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • 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 sentence A,
    • 1 corresponde a un token de sentence B.

    ¿Qué son los IDs de tipo de token?

  • 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 en lugar de una tupla simple.

Devuelve

LxmertModelOutput o tuple(torch.Tensor)

Un LxmertModelOutput 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 (LxmertConfig) y las entradas.

El método forward de LxmertModel 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 pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • language_output (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Secuencia de hidden-states en la salida de la última capa del codificador de lenguaje.
  • vision_output (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del codificador visual.
  • pooled_output (torch.Tensor de forma (batch_size, hidden_size)) — Estado oculto de la última capa del primer token de la secuencia (clasificación, CLS, token) procesado adicionalmente por una capa Linear y una función de activación Tanh. La capa Linear
  • language_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • vision_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 las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • language_attentions (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • vision_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • cross_encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

LxmertForPreTraining

clase transformers.LxmertForPreTraining

< >

( config: LxmertConfig )

Parámetros

  • config (LxmertConfig) — 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() para cargar los pesos del modelo.

El modelo Lxmert con una cabeza de preentrenamiento especificada en la parte superior.

Este modelo hereda de PreTrainedModel. Consulta 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 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.Tensor] = Nonevisual_pos: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneobj_labels: dict[str, tuple[torch.Tensor, torch.Tensor]] | None = Nonematched_label: typing.Optional[torch.LongTensor] = Noneans: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertForPreTrainingOutput or tuple(torch.Tensor)

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 usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • visual_feats (torch.Tensor de forma (batch_size, num_visual_features, visual_feat_dim)) — Esta entrada representa características visuales. Son características de objetos obtenidas mediante ROI pooling a partir de cajas delimitadoras usando un modelo faster-RCNN)

    Actualmente, la biblioteca transformers no los proporciona.

  • visual_pos (torch.Tensor de forma (batch_size, num_visual_features, visual_pos_dim)) — Esta entrada representa características espaciales correspondientes a sus características visuales relativas (mediante índice). El modelo LXMERT preentrenado espera que estas características espaciales sean cajas delimitadoras normalizadas en una escala de 0 a

    Actualmente, la biblioteca transformers no los proporciona.

  • 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 máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • visual_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 máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • 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 sentence A,
    • 1 corresponde a un token de sentence B.

    ¿Qué son los IDs de tipo de token?

  • 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 modelado de lenguaje enmascarado. Los índices deben estar en [-100, 0, ..., config.vocab_size] (ver la docstring de input_ids). Los tokens con índices establecidos en -100 se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en [0, ..., config.vocab_size]
  • obj_labels (dict[Str -- tuple[torch.Tensor, torch.Tensor]], opcional): cada clave lleva el nombre de una de las pérdidas visuales y cada elemento de la tupla tiene la forma (batch_size, num_features) y (batch_size, num_features, visual_feature_dim) para el id de la etiqueta y la puntuación de la etiqueta, respectivamente
  • matched_label (torch.LongTensor de forma (batch_size,), opcional) — Etiquetas para calcular la pérdida de clasificación sobre si la entrada de texto coincide con la imagen o no. La entrada debe ser un par de secuencias (ver input_ids docstring) Los índices deben estar en [0, 1]:
    • 0 indica que la oración no coincide con la imagen,
    • 1 indica que la frase coincide con la imagen.
  • ans (Torch.Tensor de forma (batch_size), opcional) — una representación one hot de la respuesta correcta opcional
  • 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 en lugar de una tupla simple.

Devuelve

LxmertForPreTrainingOutput o tuple(torch.Tensor)

Un LxmertForPreTrainingOutput 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 (LxmertConfig) y las entradas.

El método forward de LxmertForPreTraining 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 pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (*optional*, returned when labels is provided, torch.Tensor of shape (1,)) — Pérdida total como la suma de la pérdida de modelado de lenguaje enmascarado y la pérdida de predicción de la siguiente secuencia (clasificación).
  • prediction_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).
  • cross_relationship_score (torch.Tensor de forma (batch_size, 2)) — Puntuaciones de predicción de la cabeza de objetivo de coincidencia textual (clasificación) (puntuaciones de continuación True/False antes del SoftMax).
  • question_answering_score (torch.Tensor de forma (batch_size, n_qa_answers)) — Puntuaciones de predicción del objetivo de respuesta a preguntas (clasificación).
  • language_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • vision_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 las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • language_attentions (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • vision_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • cross_encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

LxmertForQuestionAnswering

clase transformers.LxmertForQuestionAnswering

< >

( config: LxmertConfig )

Parámetros

  • config (LxmertConfig) — 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() para cargar los pesos del modelo.

Modelo Lxmert con una cabeza de respuesta visual en la parte superior para tareas de QA de nivel inferior

Este modelo hereda de PreTrainedModel. Consulta 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 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.Tensor] = Nonevisual_pos: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertForQuestionAnsweringOutput or tuple(torch.Tensor)

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 usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • visual_feats (torch.Tensor de forma (batch_size, num_visual_features, visual_feat_dim)) — Esta entrada representa características visuales. Son características de objetos obtenidas mediante ROI pooling a partir de cajas delimitadoras usando un modelo faster-RCNN)

    Actualmente, la biblioteca transformers no los proporciona.

  • visual_pos (torch.Tensor de forma (batch_size, num_visual_features, visual_pos_dim)) — Esta entrada representa características espaciales correspondientes a sus características visuales relativas (mediante índice). El modelo LXMERT preentrenado espera que estas características espaciales sean cajas delimitadoras normalizadas en una escala de 0 a

    Actualmente, la biblioteca transformers no los proporciona.

  • 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 máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • visual_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 máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • 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 sentence A,
    • 1 corresponde a un token de sentence B.

    ¿Qué son los IDs de tipo de token?

  • 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.Tensor de forma (batch_size), opcional) — Una representación one-hot de la respuesta correcta
  • 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 en lugar de una tupla simple.

Devuelve

LxmertForQuestionAnsweringOutput o tuple(torch.Tensor)

Un LxmertForQuestionAnsweringOutput 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 (LxmertConfig) y las entradas.

El método forward de LxmertForQuestionAnswering 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 pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (*optional*, returned when labels is provided, torch.Tensor of shape (1,)) — Total loss as the sum of the masked language modeling loss and the next sequence prediction (classification) loss.k.
  • question_answering_score (torch.Tensor de forma (batch_size, n_qa_answers), opcional) — Puntuaciones de predicción del objetivo de respuesta a preguntas (clasificación).
  • language_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • vision_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 las características de entrada + una para la salida de cada capa de multimodalidad cruzada) de forma (batch_size, sequence_length, hidden_size).
  • language_attentions (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • vision_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
  • cross_encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (uno por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

>>> from transformers import AutoTokenizer, LxmertForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("unc-nlp/lxmert-base-uncased")
>>> model = LxmertForQuestionAnswering.from_pretrained("unc-nlp/lxmert-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)
...
Update on GitHub