Transformers documentation
LXMERT
Mô hình này được công bố trên HF papers vào ngày 2019-08-20 và được đóng góp cho Hugging Face Transformers vào ngày 2020-11-16.
LXMERT
Tổng quan
Mô hình LXMERT được đề xuất trong LXMERT: Learning Cross-Modality Encoder Representations from Transformers của Hao Tan & Mohit Bansal. Đây là một chuỗi các bộ mã hóa transformer hai chiều (một cho phương thức thị giác, một cho phương thức ngôn ngữ, và một để kết hợp cả hai phương thức) được tiền huấn luyện bằng cách kết hợp các mục tiêu mô hình hóa ngôn ngữ có che, căn chỉnh văn bản thị giác-ngôn ngữ, hồi quy đặc trưng ROI, mô hình hóa thuộc tính thị giác có che, mô hình hóa đối tượng thị giác có che, và trả lời câu hỏi thị giác. Tiền huấn luyện bao gồm nhiều bộ dữ liệu đa phương thức: MSCOCO, Visual-Genome + Visual-Genome Question Answering, VQA 2.0, và GQA.
Tóm tắt từ bài báo như sau:
Lý luận thị giác-ngôn ngữ đòi hỏi sự hiểu biết về các khái niệm thị giác, ngữ nghĩa ngôn ngữ và, quan trọng nhất, sự tương thích và mối quan hệ giữa hai phương thức này. Do đó, chúng tôi đề xuất khung LXMERT (Learning Cross-Modality Encoder Representations from Transformers) để học các kết nối thị giác-ngôn ngữ này. Trong LXMERT, chúng tôi xây dựng một mô hình Transformer quy mô lớn bao gồm ba bộ mã hóa: bộ mã hóa quan hệ đối tượng, bộ mã hóa ngôn ngữ và bộ mã hóa liên phương thức. Tiếp theo, để trang bị cho mô hình khả năng kết nối ngữ nghĩa thị giác và ngôn ngữ, chúng tôi tiền huấn luyện mô hình với một lượng lớn các cặp hình ảnh-câu, thông qua năm nhiệm vụ tiền huấn luyện đa dạng và đại diện: mô hình hóa ngôn ngữ có che, dự đoán đối tượng có che (hồi quy đặc trưng và phân loại nhãn), khớp liên phương thức và trả lời câu hỏi hình ảnh. Các nhiệm vụ này giúp học cả các mối quan hệ nội phương thức và liên phương thức. Sau khi tinh chỉnh từ các tham số tiền huấn luyện của chúng tôi, mô hình của chúng tôi đạt được kết quả tiên tiến nhất trên hai bộ dữ liệu trả lời câu hỏi thị giác (tức là VQA và GQA). Chúng tôi cũng cho thấy khả năng tổng quát hóa của mô hình liên phương thức tiền huấn luyện của mình bằng cách thích ứng nó với một nhiệm vụ lý luận thị giác đầy thách thức, NLVR, và cải thiện kết quả tốt nhất trước đó 22% tuyệt đối (từ 54% lên 76%). Cuối cùng, chúng tôi trình bày các nghiên cứu ablation chi tiết để chứng minh rằng cả các thành phần mô hình mới của chúng tôi và các chiến lược tiền huấn luyện đều đóng góp đáng kể vào kết quả mạnh mẽ của chúng tôi; và cũng trình bày một số trực quan hóa chú ý cho các bộ mã hóa khác nhau
Mô hình này được đóng góp bởi eltoto1219. Mã gốc có thể được tìm thấy tại đây.
Mẹo sử dụng
- Bounding boxes không nhất thiết phải được sử dụng trong các embedding đặc trưng thị giác, bất kỳ loại đặc trưng thị giác-không gian nào cũng đều có thể hoạt động.
- Cả trạng thái ẩn ngôn ngữ lẫn trạng thái ẩn thị giác mà LXMERT xuất ra đều được truyền qua lớp liên phương thức, do đó chúng chứa thông tin từ cả hai phương thức. Để truy cập một phương thức chỉ chú ý đến chính nó, hãy chọn trạng thái ẩn thị giác/ngôn ngữ từ đầu vào đầu tiên trong bộ có thứ tự.
- Encoder chú ý liên thông hai chiều chỉ trả về các giá trị chú ý khi chế độ ngôn ngữ được sử dụng làm đầu vào và chế độ thị giác được sử dụng làm vector ngữ cảnh. Hơn nữa, trong khi encoder liên thông hai chiều chứa chú ý tự thân cho từng chế độ tương ứng và chú ý liên thông, chỉ có chú ý liên thông được trả về và cả hai đầu ra chú ý tự thân đều bị bỏ qua.
Tài nguyên
LxmertConfig
lớp 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 )
Tham số
- vocab_size (
int, tuỳ chọn, mặc định là30522) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởiinput_ids. - hidden_size (
int, tùy chọn, mặc định là768) — Kích thước của các biểu diễn ẩn. - num_attention_heads (
int, tùy chọn, mặc định là12) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - num_qa_labels (
int, tùy chọn, mặc định là 9500) — Đây là tổng số nhãn trả lời câu hỏi (QA) khác nhau. Nếu sử dụng nhiều hơn một bộ dữ liệu có QA, người dùng cần tính đến tổng số nhãn mà tất cả các bộ dữ liệu có. - num_object_labels (
int, tùy chọn, mặc định là 1600) — Đây là tổng số lượng đối tượng duy nhất về mặt ngữ nghĩa mà lxmert có thể phân loại một pooled-object feature là thuộc về. - num_attr_labels (
int, tùy chọn, mặc định là 400) — Đây là tổng số thuộc tính duy nhất về mặt ngữ nghĩa mà lxmert có thể phân loại một đặc trưng đối tượng đã gộp (pooled-object feature) là sở hữu. - intermediate_size (
int, tùy chọn, mặc định là3072) — Kích thước của các biểu diễn MLP. - hidden_act (
str, tùy chọn, mặc định làgelu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - hidden_dropout_prob (
Union[float, int], tùy chọn, mặc định là0.1) — Xác suất dropout cho tất cả các lớp fully connected trong embeddings, encoder và pooler. - attention_probs_dropout_prob (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ dropout cho các xác suất chú ý. - max_position_embeddings (
int, tùy chọn, mặc định là512) — Chiều dài tối đa của chuỗi mà mô hình này có thể được sử dụng. - type_vocab_size (
int, tùy chọn, mặc định là2) — Kích thước từ vựng củatoken_type_ids. - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - l_layers (
int, tùy chọn, mặc định là 9) — Số lượng lớp ẩn trong bộ mã hóa ngôn ngữ Transformer. - x_layers (
int, tùy chọn, mặc định là 5) — Số lượng lớp ẩn trong bộ mã hóa đa phương thức chéo của Transformer. - r_layers (
int, tùy chọn, mặc định là 5) — Số lượng lớp ẩn trong bộ mã hóa thị giác Transformer. - visual_feat_dim (
int, tùy chọn, mặc định là 2048) — Đây là chiều cuối cùng của các đặc trưng đối tượng đã được pool, được dùng làm đầu vào cho mô hình, thể hiện kích thước của từng đặc trưng đối tượng. - visual_pos_dim (
int, tùy chọn, mặc định là 4) — Đây là số lượng đặc trưng không gian được trộn vào các đặc trưng thị giác. Giá trị mặc định được đặt là 4 vì thông thường đây sẽ đại diện cho vị trí của một hộp bao. Ví dụ: (x, y, width, height) - visual_loss_normalizer (
float, tùy chọn, mặc định là 6.67) — Đây là hệ số tỷ lệ mà mỗi visual loss được nhân với nếu trong quá trình pretraining, bạn quyết định huấn luyện với nhiều mục tiêu loss dựa trên thị giác. - task_matched (
bool, tùy chọn, mặc định làTrue) — Nhiệm vụ này được dùng cho việc khớp câu với hình ảnh. Nếu câu mô tả chính xác hình ảnh, nhãn sẽ là 1. Nếu câu không mô tả chính xác hình ảnh, nhãn sẽ là 0. - task_mask_lm (
bool, tùy chọn, mặc định làTrue) — Có thêm mô hình hóa ngôn ngữ bị che (masked language modeling, như được sử dụng trong các mô hình tiền huấn luyện như BERT) vào mục tiêu hàm mất mát hay không. - task_obj_predict (
bool, tùy chọn, mặc định làTrue) — Có thêm dự đoán đối tượng, dự đoán thuộc tính và hồi quy đặc trưng vào mục tiêu loss hay không. - task_qa (
bool, tùy chọn, mặc định làTrue) — Có thêm tổn thất trả lời câu hỏi vào hàm mục tiêu hay không - visual_obj_loss (
bool, tùy chọn, mặc định làTrue) — Có tính toán mục tiêu tổn thất dự đoán đối tượng hay không - visual_attr_loss (
bool, tùy chọn, mặc định làTrue) — Có tính toán mục tiêu tổn thất dự đoán thuộc tính hay không - visual_feat_loss (
bool, tùy chọn, mặc định làTrue) — Có tính toán mục tiêu tổn thất hồi quy đặc trưng hay không - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong từ vựng. - bos_token_id (
int, tùy chọn) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - eos_token_id (
Union[int, list[int]], tùy chọn) — Token id được sử dụng cho end-of-stream trong bảng từ vựng. - tie_word_embeddings (
bool, tùy chọn, mặc định làTrue) — Có nên gắn kết các trọng số nhúng theo ánh xạtied_weights_keyscủa mô hình hay không.
Đây là lớp cấu hình để lưu trữ cấu hình của một LxmertModel. Nó được sử dụng để khởi tạo một mô hình Lxmert theo các đối số được chỉ định, xác định kiến trúc của mô hình. Việc khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của unc-nlp/lxmert-base-uncased
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
LxmertTokenizer
lớp 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 )
Tham số
- vocab (
strhoặcdict[str, int], không bắt buộc) — Từ điển từ vựng tùy chỉnh. Nếu không được cung cấp, từ vựng sẽ được tải từvocab_file. - do_lower_case (
bool, tùy chọn, mặc định làTrue) — Có chuyển đổi chữ thường cho đầu vào khi phân tách token hay không. - unk_token (
str, tùy chọn, mặc định là"[UNK]") — Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế. - sep_token (
str, tùy chọn, mặc định là"[SEP]") — Token phân cách, được sử dụng khi xây dựng một chuỗi từ nhiều chuỗi, ví dụ: hai chuỗi cho phân loại chuỗi hoặc một văn bản và một câu hỏi cho trả lời câu hỏi. Nó cũng được sử dụng làm token cuối cùng của một chuỗi được xây dựng với các token đặc biệt. - pad_token (
str, tùy chọn, mặc định là"[PAD]") — Token được sử dụng để đệm, chẳng hạn khi xử lý các lô (batch) chứa các chuỗi có độ dài khác nhau. - cls_token (
str, tuỳ chọn, mặc định là"[CLS]") — Token phân loại được sử dụng khi thực hiện phân loại chuỗi (phân loại toàn bộ chuỗi thay vì phân loại từng token). Đây là token đầu tiên của chuỗi khi được xây dựng với các token đặc biệt. - mask_token (
str, tùy chọn, mặc định là"[MASK]") — Token được sử dụng để che các giá trị. Đây là token được dùng khi huấn luyện mô hình này với mô hình hóa ngôn ngữ có che (masked language modeling). Đây là token mà mô hình sẽ cố gắng dự đoán. - tokenize_chinese_chars (
bool, tùy chọn, mặc định làTrue) — Có phân tách ký tự tiếng Trung hay không. - strip_accents (
bool, tùy chọn) — Có nên loại bỏ tất cả các dấu thanh hay không. Nếu không chỉ định tùy chọn này, giá trị sẽ được xác định bởi giá trị củalowercase(giống như trong BERT gốc).
Xây dựng một tokenizer BERT (dựa trên thư viện tokenizers của HuggingFace). Dựa trên WordPiece.
Tokenizer này kế thừa từ TokenizersBackend, lớp chứa hầu hết các phương thức chính. Người dùng nên tham khảo lớp cha này để biết thêm thông tin về các phương thức đó.
Đầu ra cụ thể của Lxmert
lớp 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 )
Tham số
- language_output (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi hidden-states tại đầu ra của lớp cuối cùng của bộ mã hóa ngôn ngữ. - vision_output (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi hidden-states tại đầu ra của lớp cuối cùng của bộ mã hóa thị giác. - pooled_output (
torch.Tensorcó hình dạng(batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại, CLS) sau khi được xử lý thêm bởi một lớp Linear và hàm kích hoạt Tanh. Lớp Linear - language_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple củatorch.Tensor(một tensor cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - vision_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple cáctorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - cross_encoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple củatorch.Tensor(một tensor cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads).
Các đầu ra của Lxmert bao gồm các trạng thái ẩn cuối cùng, các đầu ra được gộp và xác suất chú ý cho các bộ mã hóa ngôn ngữ, thị giác và liên phương thức. (lưu ý: bộ mã hóa thị giác trong Lxmert được gọi là bộ mã hóa “quan hệ”)
lớp 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 )
Tham số
- 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. - prediction_logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax). - cross_relationship_score (
torch.Tensorcó hình dạng(batch_size, 2)) — Điểm dự đoán của đầu mục tiêu khớp văn bản (phân loại) (điểm của tiếp nối True/False trước SoftMax). - question_answering_score (
torch.Tensorcó hình dạng(batch_size, n_qa_answers)) — Điểm dự đoán của mục tiêu trả lời câu hỏi (phân loại). - language_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple củatorch.Tensor(một tensor cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - vision_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple cáctorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - cross_encoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple củatorch.Tensor(một tensor cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads).
Loại đầu ra của LxmertForPreTraining.
lớp 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 )
Tham số
- 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.Tensorcó hình dạng(batch_size, n_qa_answers), tùy chọn) — Điểm dự đoán của mục tiêu trả lời câu hỏi (phân loại). - language_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple củatorch.Tensor(một tensor cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - vision_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple cáctorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - cross_encoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ tuple củatorch.Tensor(một tensor cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads).
Loại đầu ra của LxmertForQuestionAnswering.
LxmertModel
lớp transformers.LxmertModel
< source >( config: LxmertConfig )
Tham số
- config (LxmertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Lxmert cơ bản, xuất ra các hidden-state thô mà không có bất kỳ head cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- visual_feats (
torch.Tensorcó hình dạng(batch_size, num_visual_features, visual_feat_dim)) — Đầu vào này đại diện cho các đặc trưng thị giác. Chúng là các đặc trưng đối tượng được pooling từ các bounding box bằng mô hình faster-RCNN)Hiện tại, thư viện transformers chưa cung cấp những tính năng này.
- visual_pos (
torch.Tensorcó hình dạng(batch_size, num_visual_features, visual_pos_dim)) — Đầu vào này đại diện cho các đặc trưng không gian tương ứng với các đặc trưng thị giác tương đối (theo chỉ số) của chúng. Mô hình LXMERT được huấn luyện trước kỳ vọng các đặc trưng không gian này là các hộp bao (bounding box) đã được chuẩn hóa trên thang đo từ 0 đếnHiện tại, thư viện transformers chưa cung cấp những tính năng này.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- visual_attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- token_type_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong[0, 1]:- 0 tương ứng với một token sentence A,
- 1 tương ứng với một token sentence B.
- inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
LxmertModelOutput hoặc tuple(torch.Tensor)
Một LxmertModelOutput hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (LxmertConfig) và đầu vào.
Phương thức forward của LxmertModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
- language_output (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của bộ mã hóa ngôn ngữ. - vision_output (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-states tại đầu ra của lớp cuối cùng của bộ mã hóa thị giác. - pooled_output (
torch.Tensorcó hình dạng(batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại, CLS) sau khi được xử lý thêm bởi một lớp Linear và hàm kích hoạt Tanh. Lớp - language_hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có shape(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Bộ tuple cáctorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - vision_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax của chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - cross_encoder_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khi truyềnoutput_attentions=Truehoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được dùng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
LxmertForPreTraining
lớp transformers.LxmertForPreTraining
< source >( config: LxmertConfig )
Tham số
- config (LxmertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Lxmert với một đầu pretraining được chỉ định ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- visual_feats (
torch.Tensorcó hình dạng(batch_size, num_visual_features, visual_feat_dim)) — Đầu vào này đại diện cho các đặc trưng thị giác. Chúng là các đặc trưng đối tượng được pooling từ các bounding box bằng mô hình faster-RCNN)Hiện tại, thư viện transformers chưa cung cấp những tính năng này.
- visual_pos (
torch.Tensorcó hình dạng(batch_size, num_visual_features, visual_pos_dim)) — Đầu vào này đại diện cho các đặc trưng không gian tương ứng với các đặc trưng thị giác tương đối (theo chỉ số) của chúng. Mô hình LXMERT được huấn luyện trước kỳ vọng các đặc trưng không gian này là các hộp bao (bounding box) đã được chuẩn hóa trên thang đo từ 0 đếnHiện tại, thư viện transformers chưa cung cấp những tính năng này.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- visual_attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- token_type_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong[0, 1]:- 0 tương ứng với một token sentence A,
- 1 tương ứng với một token sentence B.
- inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - labels (
torch.LongTensorcó shape(batch_size, sequence_length), tùy chọn) — Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có che (masked language modeling loss). Các chỉ số phải nằm trong[-100, 0, ..., config.vocab_size](xem docstring củainput_ids). Các token có chỉ số được đặt thành-100sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các token có nhãn trong[0, ..., config.vocab_size] - obj_labels (
dict[Str -- tuple[torch.Tensor, torch.Tensor]], optional): mỗi khóa được đặt tên theo từng một trong các tổn thất thị giác và mỗi phần tử của bộ hai có hình dạng(batch_size, num_features)và(batch_size, num_features, visual_feature_dim)lần lượt cho id nhãn và điểm nhãn - matched_label (
torch.LongTensorcó hình dạng(batch_size,), tùy chọn) — Nhãn để tính loss phân loại xem đầu vào văn bản có khớp với hình ảnh hay không. Đầu vào phải là một cặp chuỗi (xeminput_idsdocstring) Chỉ số phải nằm trong[0, 1]:- 0 cho thấy câu không khớp với hình ảnh,
- 1 cho thấy câu khớp với hình ảnh.
- ans (
Torch.Tensorcó shape(batch_size), không bắt buộc) — một biểu diễn one hot của câu trả lời đúng không bắt buộc - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
LxmertForPreTrainingOutput hoặc tuple(torch.Tensor)
Một LxmertForPreTrainingOutput hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (LxmertConfig) và đầu vào.
Phương thức forward của LxmertForPreTraining ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
- loss (
*optional*, được trả về khilabelsđược cung cấp,torch.Tensorcó hình dạng(1,)) — Tổng loss là tổng của loss mô hình hóa ngôn ngữ có mặt nạ (masked language modeling) và loss phân loại dự đoán chuỗi tiếp theo (next sequence prediction). - prediction_logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token từ vựng trước SoftMax). - cross_relationship_score (
torch.Tensorcó hình dạng(batch_size, 2)) — Điểm dự đoán của đầu mục tiêu khớp văn bản (phân loại) (điểm của tiếp nối True/False trước SoftMax). - question_answering_score (
torch.Tensorcó hình dạng(batch_size, n_qa_answers)) — Điểm dự đoán của mục tiêu trả lời câu hỏi (phân loại). - language_hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có shape(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Bộ tuple cáctorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - vision_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax của chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - cross_encoder_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khi truyềnoutput_attentions=Truehoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được dùng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
LxmertForQuestionAnswering
lớp transformers.LxmertForQuestionAnswering
< source >( config: LxmertConfig )
Tham số
- config (LxmertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Lxmert với một đầu trả lời trực quan phía trên cho các tác vụ QA hạ nguồn
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- visual_feats (
torch.Tensorcó hình dạng(batch_size, num_visual_features, visual_feat_dim)) — Đầu vào này đại diện cho các đặc trưng thị giác. Chúng là các đặc trưng đối tượng được pooling từ các bounding box bằng mô hình faster-RCNN)Hiện tại, thư viện transformers chưa cung cấp những tính năng này.
- visual_pos (
torch.Tensorcó hình dạng(batch_size, num_visual_features, visual_pos_dim)) — Đầu vào này đại diện cho các đặc trưng không gian tương ứng với các đặc trưng thị giác tương đối (theo chỉ số) của chúng. Mô hình LXMERT được huấn luyện trước kỳ vọng các đặc trưng không gian này là các hộp bao (bounding box) đã được chuẩn hóa trên thang đo từ 0 đếnHiện tại, thư viện transformers chưa cung cấp những tính năng này.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- visual_attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- token_type_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong[0, 1]:- 0 tương ứng với một token sentence A,
- 1 tương ứng với một token sentence B.
- inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - labels (
Torch.Tensorcó hình dạng(batch_size), tùy chọn) — Biểu diễn one-hot của câu trả lời đúng - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
LxmertForQuestionAnsweringOutput hoặc tuple(torch.Tensor)
Một LxmertForQuestionAnsweringOutput hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (LxmertConfig) và đầu vào.
Phương thức forward của LxmertForQuestionAnswering ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
- loss (
*optional*, được trả về khilabelsđược cung cấp,torch.Tensorcó shape(1,)) — Tổng loss là tổng của loss masked language modeling và loss phân loại next sequence prediction. - question_answering_score (
torch.Tensorcó hình dạng(batch_size, n_qa_answers), tùy chọn) — Điểm dự đoán của mục tiêu trả lời câu hỏi (phân loại). - language_hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có shape(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Bộ tuple cáctorch.Tensor(một cho các đặc trưng đầu vào + một cho đầu ra của mỗi lớp đa phương thức) có hình dạng(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - vision_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax của chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention heads). - cross_encoder_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khi truyềnoutput_attentions=Truehoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length). Trọng số chú ý sau softmax chú ý, được dùng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
Ví dụ:
>>> 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)
...