Transformers documentation
LXMERT
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
< source >( 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 predeterminado30522) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse medianteinput_ids. - hidden_size (
int, opcional, valor predeterminado768) — Dimensión de las representaciones ocultas. - num_attention_heads (
int, opcional, valor predeterminado12) — 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 predeterminado3072) — Dimensión de las representaciones del MLP. - hidden_act (
str, opcional, valor predeterminadogelu) — 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 predeterminado0.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 predeterminado0.1) — La proporción de dropout para las probabilidades de atención. - max_position_embeddings (
int, opcional, valor predeterminado512) — La longitud máxima de secuencia con la que se podría utilizar este modelo. - type_vocab_size (
int, opcional, valor predeterminado2) — El tamaño del vocabulario detoken_type_ids. - initializer_range (
float, opcional, valor predeterminado0.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 predeterminadoTrue) — 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 predeterminadoTrue) — 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 predeterminadoTrue) — 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 predeterminadoTrue) — Si se debe o no añadir la pérdida de respuesta a preguntas al objetivo - visual_obj_loss (
bool, opcional, valor predeterminadoTrue) — Si se calcula o no la función de pérdida de predicción de objetos - visual_attr_loss (
bool, opcional, valor predeterminadoTrue) — Si se calcula o no la función de pérdida de predicción de atributos - visual_feat_loss (
bool, opcional, valor predeterminadoTrue) — 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 predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel 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
< source >( 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 (
strodict[str, int], opcional) — Diccionario de vocabulario personalizado. Si no se proporciona, el vocabulario se carga desdevocab_file. - do_lower_case (
bool, opcional, valor predeterminadoTrue) — 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 predeterminadoTrue) — 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 delowercase(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
< source >( 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.Tensorde 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.Tensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del codificador visual. - pooled_output (
torch.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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 whenlabelsis provided,torch.Tensorof 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.Tensorde 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.Tensorde 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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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 whenlabelsis provided,torch.Tensorof 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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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
< source >( 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.LongTensorde 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.
- visual_feats (
torch.Tensorde 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.Tensorde 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 aActualmente, la biblioteca transformers no los proporciona.
- attention_mask (
torch.Tensorde 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.
- visual_attention_mask (
torch.Tensorde 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.
- token_type_ids (
torch.LongTensorde 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.
- inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen 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. Consulteattentionsen 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. Consultehidden_statesen 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
Moduledespué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.Tensorde 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.Tensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del codificador visual. - pooled_output (
torch.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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
< source >( 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.LongTensorde 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.
- visual_feats (
torch.Tensorde 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.Tensorde 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 aActualmente, la biblioteca transformers no los proporciona.
- attention_mask (
torch.Tensorde 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.
- visual_attention_mask (
torch.Tensorde 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.
- token_type_ids (
torch.LongTensorde 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.
- inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se 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.LongTensorde 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 (verinput_idsdocstring) 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.Tensorde 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. Consulteattentionsen 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. Consultehidden_statesen 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
Moduledespué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 whenlabelsis provided,torch.Tensorof 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.Tensorde 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.Tensorde 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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.
LxmertForQuestionAnswering
clase transformers.LxmertForQuestionAnswering
< source >( 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
< source >( 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.LongTensorde 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.
- visual_feats (
torch.Tensorde 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.Tensorde 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 aActualmente, la biblioteca transformers no los proporciona.
- attention_mask (
torch.Tensorde 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.
- visual_attention_mask (
torch.Tensorde 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.
- token_type_ids (
torch.LongTensorde 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.
- inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
Torch.Tensorde 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. Consulteattentionsen 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. Consultehidden_statesen 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
Moduledespué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 whenlabelsis provided,torch.Tensorof 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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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)
...