Transformers 文件

BROS

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

BROS

PyTorch

概述

BROS 模型是由 Teakgyu Hong、Donghyun Kim、Mingi Ji、Wonseok Hwang、Daehyun Nam、Sungrae Park 在 BROS: A Pre-trained Language Model Focusing on Text and Layout for Better Key Information Extraction from Documents 中提出的。

BROS 代表 *BERT Relying On Spatiality*。它是一個僅編碼器Transformer模型,以令牌序列及其邊界框作為輸入,並輸出隱藏狀態序列。BROS 編碼相對空間資訊而不是使用絕對空間資訊。

它透過兩個目標進行預訓練:BERT 中使用的令牌掩碼語言建模目標(TMLM)和一種新穎的區域掩碼語言建模目標(AMLM)。在 TMLM 中,令牌被隨機掩碼,模型使用空間資訊和其他未掩碼的令牌來預測被掩碼的令牌。AMLM 是 TMLM 的 2D 版本。它隨機掩碼文字令牌並使用與 TMLM 相同的資訊進行預測,但它掩碼的是文字塊(區域)。

BrosForTokenClassification 在 BrosModel 之上有一個簡單的線性層。它預測每個令牌的標籤。BrosSpadeEEForTokenClassification 在 BrosModel 之上有一個 initial_token_classifiersubsequent_token_classifierinitial_token_classifier 用於預測每個實體的第一個令牌,而 subsequent_token_classifier 用於預測實體內的下一個令牌。BrosSpadeELForTokenClassification 在 BrosModel 之上有一個 entity_linkerentity_linker 用於預測兩個實體之間的關係。

BrosForTokenClassificationBrosSpadeEEForTokenClassification 本質上執行相同的工作。然而,BrosForTokenClassification 假設輸入令牌是完美序列化的(由於它們存在於 2D 空間中,這是一個非常具有挑戰性的任務),而 BrosSpadeEEForTokenClassification 允許在處理序列化錯誤方面具有更大的靈活性,因為它從一個令牌預測下一個連線令牌。

BrosSpadeELForTokenClassification 執行實體內連結任務。如果兩個實體之間存在某種關係,它會預測從一個令牌(屬於一個實體)到另一個令牌(屬於另一個實體)的關係。

BROS 在 FUNSD、SROIE、CORD 和 SciTSR 等關鍵資訊提取 (KIE) 基準測試中取得了可比或更好的結果,而無需依賴明確的視覺特徵。

論文摘要如下:

從文件影像中提取關鍵資訊 (KIE) 需要理解二維 (2D) 空間中文字的上下文和空間語義。許多最近的研究試圖透過開發預訓練語言模型來解決該任務,這些模型側重於將文件影像中的視覺特徵與文字及其佈局相結合。另一方面,本文透過迴歸基本:文字和佈局的有效組合來解決該問題。具體來說,我們提出了一種名為 BROS (BERT Relying On Spatiality) 的預訓練語言模型,該模型編碼 2D 空間中文字的相對位置,並透過區域掩碼策略從無標籤文件中學習。憑藉這種用於理解 2D 空間中文字的最佳化訓練方案,BROS 在四個 KIE 基準測試 (FUNSD、SROIE、CORD 和 SciTSR) 中顯示出與以前方法相當或更好的效能,而無需依賴視覺特徵。本文還揭示了 KIE 任務中的兩個真實世界挑戰——(1) 最小化不正確的文字排序導致的錯誤,以及 (2) 從更少的下游示例中高效學習——並證明了 BROS 相對於以前方法的優越性。*

此模型由 jinho8345 貢獻。原始程式碼可在 此處 找到。

使用技巧和示例

  • forward() 需要 input_idsbbox(邊界框)。每個邊界框應為 (x0, y0, x1, y1) 格式(左上角,右下角)。邊界框的獲取取決於外部 OCR 系統。x 座標應按文件影像寬度歸一化,y 座標應按文件影像高度歸一化。
def expand_and_normalize_bbox(bboxes, doc_width, doc_height):
    # here, bboxes are numpy array

    # Normalize bbox -> 0 ~ 1
    bboxes[:, [0, 2]] = bboxes[:, [0, 2]] / width
    bboxes[:, [1, 3]] = bboxes[:, [1, 3]] / height
  • [~transformers.BrosForTokenClassification.forward, ~transformers.BrosSpadeEEForTokenClassification.forward, ~transformers.BrosSpadeEEForTokenClassification.forward] 不僅需要 input_idsbbox,還需要 box_first_token_mask 用於損失計算。它是一個掩碼,用於過濾掉每個框的非第一個令牌。您可以透過在從單詞建立 input_ids 時儲存邊界框的起始令牌索引來獲取此掩碼。您可以使用以下程式碼建立 box_first_token_mask
def make_box_first_token_mask(bboxes, words, tokenizer, max_seq_length=512):

    box_first_token_mask = np.zeros(max_seq_length, dtype=np.bool_)

    # encode(tokenize) each word from words (list[str])
    input_ids_list: list[list[int]] = [tokenizer.encode(e, add_special_tokens=False) for e in words]

    # get the length of each box
    tokens_length_list: list[int] = [len(l) for l in input_ids_list]

    box_end_token_indices = np.array(list(itertools.accumulate(tokens_length_list)))
    box_start_token_indices = box_end_token_indices - np.array(tokens_length_list)

    # filter out the indices that are out of max_seq_length
    box_end_token_indices = box_end_token_indices[box_end_token_indices < max_seq_length - 1]
    if len(box_start_token_indices) > len(box_end_token_indices):
        box_start_token_indices = box_start_token_indices[: len(box_end_token_indices)]

    # set box_start_token_indices to True
    box_first_token_mask[box_start_token_indices] = True

    return box_first_token_mask

資源

  • 演示指令碼可在 此處 找到。

BrosConfig

class transformers.BrosConfig

< >

( vocab_size = 30522 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 0 dim_bbox = 8 bbox_scale = 100.0 n_relations = 1 classifier_dropout_prob = 0.1 **kwargs )

引數

  • vocab_size (int, 可選, 預設為 30522) — Bros 模型的詞彙表大小。定義了呼叫 BrosModelTFBrosModel 時可以由 inputs_ids 表示的不同令牌的數量。
  • hidden_size (int, 可選, 預設為 768) — 編碼器層和池化層維度。
  • num_hidden_layers (int, 可選, 預設為 12) — Transformer 編碼器中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • intermediate_size (int, 可選, 預設為 3072) — Transformer 編碼器中“中間”(通常稱為前饋)層的維度。
  • hidden_act (strCallable, 可選, 預設為 "gelu") — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果是字串,則支援 "gelu""relu""silu""gelu_new"
  • hidden_dropout_prob (float, 可選, 預設為 0.1) — 嵌入、編碼器和池化器中所有全連線層的 dropout 機率。
  • attention_probs_dropout_prob (float, 可選, 預設為 0.1) — 注意力機率的 dropout 比率。
  • max_position_embeddings (int, 可選, 預設為 512) — 此模型可能使用的最大序列長度。通常為了以防萬一會設定一個較大的值(例如 512、1024 或 2048)。
  • type_vocab_size (int, 可選, 預設為 2) — 呼叫 BrosModelTFBrosModel 時傳遞的 token_type_ids 的詞彙表大小。
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態初始化器的標準差。
  • layer_norm_eps (float, 可選, 預設為 1e-12) — 層歸一化層使用的 epsilon 值。
  • pad_token_id (int, 可選, 預設為 0) — 令牌詞彙表中填充令牌的索引。
  • dim_bbox (int, 可選, 預設為 8) — 邊界框座標的維度。(x0, y1, x1, y0, x1, y1, x0, y1)
  • bbox_scale (float, 可選, 預設為 100.0) — 邊界框座標的比例因子。
  • n_relations (int, 可選, 預設為 1) — SpadeEE(實體提取)、SpadeEL(實體連結)頭的關係數量。
  • classifier_dropout_prob (float, 可選, 預設為 0.1) — 分類器頭的 dropout 比率。

這是配置類,用於儲存 BrosModelTFBrosModel 的配置。它用於根據指定的引數例項化 Bros 模型,定義模型架構。使用預設值例項化配置將生成與 Bros jinho8345/bros-base-uncased 架構類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 的文件。

示例

>>> from transformers import BrosConfig, BrosModel

>>> # Initializing a BROS jinho8345/bros-base-uncased style configuration
>>> configuration = BrosConfig()

>>> # Initializing a model from the jinho8345/bros-base-uncased style configuration
>>> model = BrosModel(configuration)

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

BrosProcessor

class transformers.BrosProcessor

< >

( tokenizer = None **kwargs )

引數

  • tokenizer (BertTokenizerFast, 可選) — BertTokenizerFast 的一個例項。分詞器是必需的輸入。

構造一個 Bros 處理器,它封裝了一個 BERT 分詞器。

BrosProcessor 提供了 BertTokenizerFast 的所有功能。有關更多資訊,請參閱 call()decode() 的文件字串。

__call__

< >

( text: typing.Union[str, list[str], list[list[str]]] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy] = None max_length: typing.Optional[int] = None stride: int = 0 pad_to_multiple_of: typing.Optional[int] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None **kwargs )

此方法使用 BertTokenizerFast.call() 來準備文字供模型使用。

有關更多資訊,請參閱上述兩種方法的文件字串。

BrosModel

class transformers.BrosModel

< >

( config add_pooling_layer = True )

引數

  • config (BrosModel) — 包含模型所有引數的模型配置類。用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
  • add_pooling_layer (bool, 可選, 預設為 True) — 是否新增池化層

裸 Bros 模型,不帶任何特定頭部,直接輸出原始隱藏狀態。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None bbox: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None token_type_ids: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • bbox (形狀為 ‘(batch_size, num_boxes, 4)’ 的 'torch.FloatTensor') — 輸入序列中每個標記的邊界框座標。每個邊界框是四個值(x1, y1, x2, y2)的列表,其中 (x1, y1) 是左上角,(x2, y2) 是邊界框的右下角。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選自 [0, 1]

    • 1 表示未被遮蓋的標記,
    • 0 表示被遮蓋的標記。

    什麼是注意力掩碼?

  • token_type_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 分段標記索引,用於指示輸入的第一個和第二個部分。索引選自 [0, 1]

    • 0 對應於句子 A 標記,
    • 1 對應於句子 B 標記。

    什麼是標記型別 ID?

  • position_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 位置嵌入中每個輸入序列標記位置的索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • head_mask (形狀為 (num_heads,)(num_layers, num_heads)torch.Tensor可選) — 掩碼,用於使自注意力模組的選定頭部無效。掩碼值選自 [0, 1]

    • 1 表示頭部未被遮蓋
    • 0 表示頭部被遮蓋
  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor可選) — (可選)您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望對如何將 input_ids 索引轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,則此功能很有用。
  • encoder_hidden_states (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor可選) — 編碼器最後一層輸出的隱藏狀態序列。如果模型配置為解碼器,則在交叉注意力中使用。
  • encoder_attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 掩碼,用於避免對編碼器輸入中的填充標記索引執行注意力。如果模型配置為解碼器,則此掩碼在交叉注意力中使用。掩碼值選自 [0, 1]

    • 1 表示未被遮蓋的標記,
    • 0 表示被遮蓋的標記。
  • past_key_values (list[torch.FloatTensor]可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含兩個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,則將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最後一個 input_ids(那些沒有將其過去的鍵值狀態提供給此模型的),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • use_cache (bool可選) — 如果設定為 True,則返回 past_key_values 鍵值狀態,並可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參見返回張量下的 attentions
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參見返回張量下的 hidden_states
  • return_dict (bool可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentionstorch.FloatTensor 元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (BrosConfig) 和輸入的不同元素。

  • last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

  • pooler_output (形狀為 (batch_size, hidden_size)torch.FloatTensor) — 經過用於輔助預訓練任務的層進一步處理後,序列中第一個標記(分類標記)的最後一層隱藏狀態。例如,對於 BERT 家族模型,這會在經過線性層和 tanh 啟用函式處理後返回分類標記。線性層權重在預訓練期間根據下一個句子預測(分類)目標進行訓練。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 元組(如果模型有嵌入層,則一個用於嵌入輸出,加上每個層輸出一個),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

  • past_key_values (Cache可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關詳細資訊,請參閱我們的 kv 快取指南

    包含預計算的隱藏狀態(自注意力塊中的鍵和值,如果 config.is_encoder_decoder=True,則可選地在交叉注意力塊中),可用於(參見 past_key_values 輸入)加速順序解碼。

BrosModel 的前向方法,覆蓋了 __call__ 特殊方法。

儘管前向傳遞的配方需要在此函式中定義,但此後應呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> import torch
>>> from transformers import BrosProcessor, BrosModel

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosModel.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state

BrosForTokenClassification

class transformers.BrosForTokenClassification

< >

( config )

引數

  • config (BrosForTokenClassification) — 包含模型所有引數的模型配置類。用配置檔案初始化不會載入與模型關聯的權重,只會載入配置。檢視 from_pretrained() 方法以載入模型權重。

Bros Transformer,頂部帶有一個標記分類頭(隱藏狀態輸出頂部的線性層),例如用於命名實體識別(NER)任務。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None bbox: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None bbox_first_token_mask: typing.Optional[torch.Tensor] = None token_type_ids: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • bbox (形狀為 ‘(batch_size, num_boxes, 4)’ 的 'torch.FloatTensor') — 輸入序列中每個標記的邊界框座標。每個邊界框是四個值(x1, y1, x2, y2)的列表,其中 (x1, y1) 是左上角,(x2, y2) 是邊界框的右下角。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選自 [0, 1]

    • 1 表示未被遮蓋的標記,
    • 0 表示被遮蓋的標記。

    什麼是注意力掩碼?

  • bbox_first_token_mask (形狀為 (batch_size, sequence_length)torch.FloatTensor可選) — 掩碼,用於指示每個邊界框的第一個標記。掩碼值選自 [0, 1]

    • 1 表示未被遮蓋的標記,
    • 0 表示被遮蓋的標記。
  • token_type_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 分段標記索引,用於指示輸入的第一個和第二個部分。索引選自 [0, 1]

    • 0 對應於句子 A 標記,
    • 1 對應於句子 B 標記。

    什麼是標記型別 ID?

  • position_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 位置嵌入中每個輸入序列標記位置的索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • head_mask (形狀為 (num_heads,)(num_layers, num_heads)torch.Tensor可選) — 掩碼,用於使自注意力模組的選定頭部無效。掩碼值選自 [0, 1]

    • 1 表示頭部未被遮蓋
    • 0 表示頭部被遮蓋
  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor可選) — (可選)您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望對如何將 input_ids 索引轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,則此功能很有用。
  • labels (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 用於計算掩碼語言建模損失的標籤。索引應在 [0, ..., config.vocab_size] 或 -100 之間(參見 input_ids 文件字串)。索引設定為 -100 的標記將被忽略(掩碼),損失僅針對標籤在 [0, ..., config.vocab_size] 中的標記計算。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參見返回張量下的 attentions
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參見返回張量下的 hidden_states
  • return_dict (bool可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.TokenClassifierOutputtorch.FloatTensor 元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (BrosConfig) 和輸入的不同元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失。

  • logits (形狀為 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分類分數(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 元組(如果模型有嵌入層,則一個用於嵌入輸出,加上每個層輸出一個),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

BrosForTokenClassification 的前向方法,覆蓋了 __call__ 特殊方法。

儘管前向傳遞的配方需要在此函式中定義,但此後應呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> import torch
>>> from transformers import BrosProcessor, BrosForTokenClassification

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)

BrosSpadeEEForTokenClassification

class transformers.BrosSpadeEEForTokenClassification

< >

( config )

引數

Bros 模型頂部帶有一個標記分類頭(隱藏狀態輸出頂部的 initial_token_layers 和 subsequent_token_layer),例如用於命名實體識別(NER)任務。initial_token_classifier 用於預測每個實體的第一個標記,而 subsequent_token_classifier 用於預測實體內的後續標記。與 BrosForTokenClassification 相比,該模型對序列化錯誤更健壯,因為它從一個標記預測下一個標記。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None bbox: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None bbox_first_token_mask: typing.Optional[torch.Tensor] = None token_type_ids: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None initial_token_labels: typing.Optional[torch.Tensor] = None subsequent_token_labels: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.bros.modeling_bros.BrosSpadeOutputtuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • bbox (形狀為 ‘(batch_size, num_boxes, 4)’ 的 'torch.FloatTensor') — 輸入序列中每個標記的邊界框座標。每個邊界框是四個值(x1, y1, x2, y2)的列表,其中 (x1, y1) 是左上角,(x2, y2) 是邊界框的右下角。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選自 [0, 1]

    • 1 表示未被遮蓋的標記,
    • 0 表示被遮蓋的標記。

    什麼是注意力掩碼?

  • bbox_first_token_mask (形狀為 (batch_size, sequence_length)torch.FloatTensor可選) — 掩碼,用於指示每個邊界框的第一個標記。掩碼值選自 [0, 1]

    • 1 表示未被遮蓋的標記,
    • 0 表示被遮蓋的標記。
  • token_type_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 分段標記索引,用於指示輸入的第一個和第二個部分。索引選自 [0, 1]

    • 0 對應於句子 A 標記,
    • 1 對應於句子 B 標記。

    什麼是標記型別 ID?

  • position_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 位置嵌入中每個輸入序列標記位置的索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • head_mask (形狀為 (num_heads,)(num_layers, num_heads)torch.Tensor可選) — 掩碼,用於使自注意力模組的選定頭部無效。掩碼值選自 [0, 1]

    • 1 表示頭部未被遮蓋
    • 0 表示頭部被遮蓋
  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor可選) — (可選)您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望對如何將 input_ids 索引轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,則此功能很有用。
  • initial_token_labels (形狀為 (batch_size, sequence_length)torch.LongTensor可選) — 初始標記分類的標籤。
  • subsequent_token_labels (形狀為 (batch_size, sequence_length)torch.LongTensor可選) — 後續標記分類的標籤。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參見返回張量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.models.bros.modeling_bros.BrosSpadeOutputtuple(torch.FloatTensor)

一個 transformers.models.bros.modeling_bros.BrosSpadeOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置(BrosConfig)和輸入的不同元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失。

  • initial_token_logits (形狀為 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 實體初始令牌的分類分數(SoftMax 之前)。

  • subsequent_token_logits (形狀為 (batch_size, sequence_length, sequence_length+1)torch.FloatTensor) — 實體序列令牌的分類分數(SoftMax 之前)。

  • hidden_states (tuple[torch.FloatTensor], 可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則其中一個用於嵌入輸出,加上每個層的輸出)形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple[torch.FloatTensor], 可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個)形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

BrosSpadeEEForTokenClassification 的 forward 方法,覆蓋了 __call__ 特殊方法。

儘管前向傳遞的配方需要在此函式中定義,但此後應呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> import torch
>>> from transformers import BrosProcessor, BrosSpadeEEForTokenClassification

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosSpadeEEForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)

BrosSpadeELForTokenClassification

class transformers.BrosSpadeELForTokenClassification

< >

( config )

引數

Bros 模型,頂部帶有一個令牌分類頭(在隱藏狀態輸出之上有一個 entity_linker 層),例如用於實體連結。entity_linker 用於預測實體內部連結(一個實體到另一個實體)。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None bbox: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None bbox_first_token_mask: typing.Optional[torch.Tensor] = None token_type_ids: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.Tensor, 可選) — 詞彙表中輸入序列令牌的索引。預設情況下會忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • bbox (形狀為 ‘(batch_size, num_boxes, 4)’ 的 ‘torch.FloatTensor’) — 輸入序列中每個令牌的邊界框座標。每個邊界框是一個包含四個值 (x1, y1, x2, y2) 的列表,其中 (x1, y1) 是邊界框的左上角,(x2, y2) 是邊界框的右下角。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor, 可選) — 用於避免對填充令牌索引執行注意力的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示未被掩碼的令牌,
    • 0 表示被掩碼的令牌。

    什麼是注意力掩碼?

  • bbox_first_token_mask (形狀為 (batch_size, sequence_length)torch.FloatTensor, 可選) — 用於指示每個邊界框的第一個令牌的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示未被掩碼的令牌,
    • 0 表示被掩碼的令牌。
  • token_type_ids (形狀為 (batch_size, sequence_length)torch.Tensor, 可選) — 分段令牌索引,用於指示輸入的第一個和第二個部分。索引在 [0, 1] 中選擇:

    • 0 對應於 句子 A 令牌,
    • 1 對應於 句子 B 令牌。

    什麼是令牌型別 ID?

  • position_ids (形狀為 (batch_size, sequence_length)torch.Tensor, 可選) — 每個輸入序列令牌在位置嵌入中的位置索引。在 [0, config.n_positions - 1] 範圍內選擇。

    什麼是位置 ID?

  • head_mask (形狀為 (num_heads,)(num_layers, num_heads)torch.Tensor, 可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor, 可選) — 可選地,你可以直接傳遞嵌入表示,而不是傳遞 input_ids。如果你想更精細地控制如何將 input_ids 索引轉換為關聯向量,而不是使用模型內部的嵌入查詢矩陣,這會很有用。
  • labels (形狀為 (batch_size, sequence_length)torch.Tensor, 可選) — 用於計算掩碼語言建模損失的標籤。索引應在 [0, ..., config.vocab_size] 或 -100 中(參見 input_ids 文件字串)。索引設定為 -100 的令牌將被忽略(被掩碼),損失僅針對標籤在 [0, ..., config.vocab_size] 中的令牌計算。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.TokenClassifierOutputtorch.FloatTensor 元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (BrosConfig) 和輸入的不同元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失。

  • logits (形狀為 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分類分數(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 元組(如果模型有嵌入層,則一個用於嵌入輸出,加上每個層輸出一個),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

BrosSpadeELForTokenClassification 的 forward 方法,覆蓋了 __call__ 特殊方法。

儘管前向傳遞的配方需要在此函式中定義,但此後應呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> import torch
>>> from transformers import BrosProcessor, BrosSpadeELForTokenClassification

>>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

>>> model = BrosSpadeELForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

>>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
>>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
>>> encoding["bbox"] = bbox

>>> outputs = model(**encoding)
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.