Transformers 文件
LayoutLMv3
並獲得增強的文件體驗
開始使用
LayoutLMv3
概述
LayoutLMv3 模型由 Yupan Huang, Tengchao Lv, Lei Cui, Yutong Lu, Furu Wei 在 LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking 中提出。LayoutLMv3 簡化了 LayoutLMv2,它使用補丁嵌入(如在 ViT 中)而不是利用 CNN 主幹,並使用 3 個目標對模型進行預訓練:掩碼語言建模(MLM)、掩碼影像建模(MIM)和詞-補丁對齊(WPA)。
論文摘要如下:
自監督預訓練技術在文件 AI 領域取得了顯著進展。大多數多模態預訓練模型使用掩碼語言建模目標來學習文字模態上的雙向表示,但它們在影像模態的預訓練目標上有所不同。這種差異增加了多模態表示學習的難度。在本文中,我們提出了 LayoutLMv3,透過統一的文字和影像掩碼對文件 AI 的多模態 Transformer 進行預訓練。此外,LayoutLMv3 透過詞-補丁對齊目標進行預訓練,透過預測文字詞的相應影像補丁是否被掩碼來學習跨模態對齊。簡單統一的架構和訓練目標使 LayoutLMv3 成為文字中心和影像中心文件 AI 任務的通用預訓練模型。實驗結果表明,LayoutLMv3 不僅在文字中心任務(包括表單理解、收據理解和文件視覺問答)中,而且在影像中心任務(如文件影像分類和文件佈局分析)中都達到了最先進的效能。

該模型由 nielsr 貢獻。該模型的 TensorFlow 版本由 chriskoo、tokec 和 lre 新增。原始程式碼可在 此處 找到。
用法提示
- 在資料處理方面,LayoutLMv3 與其前身 LayoutLMv2 相同,除了:
- 影像需要調整大小並以常規 RGB 格式的通道進行歸一化。而 LayoutLMv2 在內部對影像進行歸一化,並期望通道以 BGR 格式。
- 文字使用位元組對編碼 (BPE) 進行標記化,而不是 WordPiece。由於資料預處理的這些差異,可以使用 LayoutLMv3Processor,它在內部結合了 LayoutLMv3ImageProcessor(用於影像模態)和 LayoutLMv3Tokenizer/LayoutLMv3TokenizerFast(用於文字模態)來準備模型的所有資料。
- 關於 LayoutLMv3Processor 的使用,請參閱其前身的使用指南。
資源
官方 Hugging Face 和社群(以🌎表示)資源的列表,以幫助您開始使用 LayoutLMv3。如果您有興趣提交資源以包含在此處,請隨時開啟拉取請求,我們將對其進行審查!該資源理想情況下應展示一些新內容,而不是重複現有資源。
LayoutLMv3 幾乎與 LayoutLMv2 完全相同,因此我們也包含了您可以為 LayoutLMv3 任務改編的 LayoutLMv2 資源。對於這些筆記本,在為模型準備資料時,請務必改用 LayoutLMv2Processor!
- LayoutLMv3ForTokenClassification 由此示例指令碼和筆記本支援。
- 一個關於如何使用 LayoutLMv2ForTokenClassification 執行推理的筆記本,以及一個關於在沒有標籤的情況下如何使用 LayoutLMv2ForTokenClassification 執行推理的筆記本。
- 一個關於如何使用 🤗 Trainer 對 LayoutLMv2ForTokenClassification 進行微調的筆記本。
- Token分類任務指南
文件問答
LayoutLMv3Config
class transformers.LayoutLMv3Config
< 來源 >( vocab_size = 50265 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-05 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 max_2d_position_embeddings = 1024 coordinate_size = 128 shape_size = 128 has_relative_attention_bias = True rel_pos_bins = 32 max_rel_pos = 128 rel_2d_pos_bins = 64 max_rel_2d_pos = 256 has_spatial_attention_bias = True text_embed = True visual_embed = True input_size = 224 num_channels = 3 patch_size = 16 classifier_dropout = None **kwargs )
引數
- vocab_size (
int
, 可選, 預設為 50265) — LayoutLMv3 模型的詞彙表大小。定義了呼叫 LayoutLMv3Model 時傳入的inputs_ids
可以表示的不同 token 的數量。 - hidden_size (
int
, 可選, 預設為 768) — 編碼器層和池化層維度。 - num_hidden_layers (
int
, 可選, 預設為 12) — Transformer 編碼器中的隱藏層數量。 - num_attention_heads (
int
, 可選, 預設為 12) — Transformer 編碼器中每個 attention 層的 attention head 數量。 - intermediate_size (
int
, 可選, 預設為 3072) — Transformer 編碼器中“中間”(即前饋)層的維度。 - hidden_act (
str
或function
, 可選, 預設為"gelu"
) — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果是字串,支援"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, 可選, 預設為 0.1) — 嵌入、編碼器和池化器中所有全連線層的 dropout 機率。 - attention_probs_dropout_prob (
float
, 可選, 預設為 0.1) — attention 機率的 dropout 比率。 - max_position_embeddings (
int
, 可選, 預設為 512) — 此模型可能使用的最大序列長度。通常為了以防萬一會設定一個較大的值(例如 512 或 1024 或 2048)。 - type_vocab_size (
int
, 可選, 預設為 2) — 呼叫 LayoutLMv3Model 時傳入的token_type_ids
的詞彙表大小。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態分佈初始化器的標準差。 - layer_norm_eps (
float
, 可選, 預設為 1e-5) — 層歸一化層使用的 epsilon 值。 - max_2d_position_embeddings (
int
, 可選, 預設為 1024) — 2D 位置嵌入可能使用的最大值。通常為了以防萬一會設定一個較大的值(例如 1024)。 - coordinate_size (
int
, 可選, 預設為128
) — 座標嵌入的維度。 - shape_size (
int
, 可選, 預設為128
) — 寬度和高度嵌入的維度。 - has_relative_attention_bias (
bool
, 可選, 預設為True
) — 是否在自注意力機制中使用相對注意力偏差。 - rel_pos_bins (
int
, 可選, 預設為 32) — 自注意力機制中使用的相對位置 bin 的數量。 - max_rel_pos (
int
, 可選, 預設為 128) — 自注意力機制中使用的相對位置的最大數量。 - max_rel_2d_pos (
int
, 可選, 預設為 256) — 自注意力機制中 2D 相對位置的最大數量。 - rel_2d_pos_bins (
int
, 可選, 預設為 64) — 自注意力機制中 2D 相對位置 bin 的數量。 - has_spatial_attention_bias (
bool
, 可選, 預設為True
) — 是否在自注意力機制中使用空間注意力偏差。 - visual_embed (
bool
, 可選, 預設為True
) — 是否新增補丁嵌入。 - input_size (
int
, 可選, 預設為224
) — 影像的大小(解析度)。 - num_channels (
int
, 可選, 預設為3
) — 影像的通道數。 - patch_size (
int
, 可選, 預設為16
) — 補丁的大小(解析度)。 - classifier_dropout (
float
, 可選) — 分類頭的 dropout 比率。
這是用於儲存 LayoutLMv3Model 配置的配置類。它用於根據指定的引數例項化 LayoutLMv3 模型,定義模型架構。使用預設值例項化配置將產生與 LayoutLMv3 microsoft/layoutlmv3-base 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。更多資訊請參閱 PretrainedConfig 的文件。
示例
>>> from transformers import LayoutLMv3Config, LayoutLMv3Model
>>> # Initializing a LayoutLMv3 microsoft/layoutlmv3-base style configuration
>>> configuration = LayoutLMv3Config()
>>> # Initializing a model (with random weights) from the microsoft/layoutlmv3-base style configuration
>>> model = LayoutLMv3Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
LayoutLMv3FeatureExtractor
預處理單張或批次影像。
LayoutLMv3ImageProcessor
class transformers.LayoutLMv3ImageProcessor
< 源 >( do_resize: bool = True size: typing.Optional[dict[str, int]] = None resample: Resampling = <Resampling.BILINEAR: 2> do_rescale: bool = True rescale_value: float = 0.00392156862745098 do_normalize: bool = True image_mean: typing.Union[float, collections.abc.Iterable[float], NoneType] = None image_std: typing.Union[float, collections.abc.Iterable[float], NoneType] = None apply_ocr: bool = True ocr_lang: typing.Optional[str] = None tesseract_config: typing.Optional[str] = '' **kwargs )
引數
- do_resize (
bool
, 可選, 預設為True
) — 是否將影像的(高、寬)尺寸調整為(size["height"], size["width"])
。可以在preprocess
中透過do_resize
覆蓋。 - size (
dict[str, int]
可選, 預設為{"height" -- 224, "width": 224}
): 調整大小後的影像尺寸。可以在preprocess
中透過size
覆蓋。 - resample (
PILImageResampling
, 可選, 預設為PILImageResampling.BILINEAR
) — 如果調整影像大小,使用的重取樣濾波器。可以在preprocess
中透過resample
覆蓋。 - do_rescale (
bool
, 可選, 預設為True
) — 是否透過指定的rescale_value
對影像的畫素值進行重新縮放。可以在preprocess
中透過do_rescale
覆蓋。 - rescale_factor (
float
, 可選, 預設為 1 / 255) — 影像畫素值縮放的比例。可以在preprocess
中透過rescale_factor
覆蓋。 - do_normalize (
bool
, 可選, 預設為True
) — 是否對影像進行歸一化。可以在preprocess
方法中透過do_normalize
引數覆蓋。 - image_mean (
Iterable[float]
或float
, 可選, 預設為IMAGENET_STANDARD_MEAN
) — 如果對影像進行歸一化,則使用的均值。這是一個浮點數或浮點數列表,其長度與影像中的通道數相同。可以在preprocess
方法中透過image_mean
引數覆蓋。 - image_std (
Iterable[float]
或float
, 可選, 預設為IMAGENET_STANDARD_STD
) — 如果對影像進行歸一化,則使用的標準差。這是一個浮點數或浮點數列表,其長度與影像中的通道數相同。可以在preprocess
方法中透過image_std
引數覆蓋。 - apply_ocr (
bool
, 可選, 預設為True
) — 是否應用 Tesseract OCR 引擎以獲取單詞 + 歸一化邊界框。可以在preprocess
方法中透過apply_ocr
引數覆蓋。 - ocr_lang (
str
, 可選) — Tesseract OCR 引擎使用的語言,由其 ISO 程式碼指定。預設使用英語。可以在preprocess
方法中透過ocr_lang
引數覆蓋。 - tesseract_config (
str
, 可選) — 轉發給 Tesseract 呼叫時config
引數的任何附加自定義配置標誌。例如:“—psm 6”。可以在preprocess
方法中透過tesseract_config
引數覆蓋。
構建 LayoutLMv3 影像處理器。
預處理
< 源 >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] do_resize: typing.Optional[bool] = None size: typing.Optional[dict[str, int]] = None resample = None do_rescale: typing.Optional[bool] = None rescale_factor: typing.Optional[float] = None do_normalize: typing.Optional[bool] = None image_mean: typing.Union[float, collections.abc.Iterable[float], NoneType] = None image_std: typing.Union[float, collections.abc.Iterable[float], NoneType] = None apply_ocr: typing.Optional[bool] = None ocr_lang: typing.Optional[str] = None tesseract_config: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None data_format: ChannelDimension = <ChannelDimension.FIRST: 'channels_first'> input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None )
引數
- images (
ImageInput
) — 要預處理的影像。期望畫素值範圍為 0 到 255 的單張或批次影像。如果傳入畫素值在 0 到 1 之間的影像,請設定do_rescale=False
。 - do_resize (
bool
, 可選, 預設為self.do_resize
) — 是否調整影像大小。 - size (
dict[str, int]
, 可選, 預設為self.size
) — 應用resize
後輸出影像的期望大小。 - resample (
int
, 可選, 預設為self.resample
) — 如果調整影像大小,使用的重取樣濾波器。可以是PILImageResampling
濾波器之一。僅在do_resize
設定為True
時有效。 - do_rescale (
bool
, 可選, 預設為self.do_rescale
) — 是否將影像畫素值重新縮放到 [0, 1] 之間。 - rescale_factor (
float
, 可選, 預設為self.rescale_factor
) — 應用於影像畫素值的重新縮放因子。僅在do_rescale
設定為True
時有效。 - do_normalize (
bool
, 可選, 預設為self.do_normalize
) — 是否對影像進行歸一化。 - image_mean (
float
或Iterable[float]
, 可選, 預設為self.image_mean
) — 用於歸一化的均值。僅在do_normalize
設定為True
時有效。 - image_std (
float
或Iterable[float]
, 可選, 預設為self.image_std
) — 用於歸一化的標準差。僅在do_normalize
設定為True
時有效。 - apply_ocr (
bool
, 可選, 預設為self.apply_ocr
) — 是否應用 Tesseract OCR 引擎以獲取單詞 + 歸一化邊界框。 - ocr_lang (
str
, 可選, 預設為self.ocr_lang
) — Tesseract OCR 引擎使用的語言,由其 ISO 程式碼指定。預設使用英語。 - tesseract_config (
str
, 可選, 預設為self.tesseract_config
) — 轉發給 Tesseract 呼叫時config
引數的任何附加自定義配置標誌。 - return_tensors (
str
或TensorType
, 可選) — 返回張量的型別。可以是以下之一:- 未設定:返回
np.ndarray
列表。 TensorType.TENSORFLOW
或'tf'
:返回tf.Tensor
批次。TensorType.PYTORCH
或'pt'
:返回torch.Tensor
批次。TensorType.NUMPY
或'np'
:返回np.ndarray
批次。TensorType.JAX
或'jax'
:返回jax.numpy.ndarray
批次。
- 未設定:返回
- data_format (
ChannelDimension
或str
, 可選, 預設為ChannelDimension.FIRST
) — 輸出影像的通道維度格式。可以是以下之一:ChannelDimension.FIRST
:影像格式為 (num_channels, height, width)。ChannelDimension.LAST
:影像格式為 (height, width, num_channels)。
- input_data_format (
ChannelDimension
或str
, 可選) — 輸入影像的通道維度格式。如果未設定,則從輸入影像推斷通道維度格式。可以是以下之一:"channels_first"
或ChannelDimension.FIRST
:影像格式為 (num_channels, height, width)。"channels_last"
或ChannelDimension.LAST
:影像格式為 (height, width, num_channels)。"none"
或ChannelDimension.NONE
:影像格式為 (height, width)。
預處理一張或一批影像。
LayoutLMv3ImageProcessorFast
class transformers.LayoutLMv3ImageProcessorFast
< 源 >( **kwargs: typing_extensions.Unpack[transformers.models.layoutlmv3.image_processing_layoutlmv3_fast.LayoutLMv3FastImageProcessorKwargs] )
構建一個快速的 Layoutlmv3 影像處理器。
預處理
< 源 >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] **kwargs: typing_extensions.Unpack[transformers.models.layoutlmv3.image_processing_layoutlmv3_fast.LayoutLMv3FastImageProcessorKwargs] ) → <class 'transformers.image_processing_base.BatchFeature'>
引數
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]
) — 要預處理的影像。期望畫素值範圍為 0 到 255 的單張或批次影像。如果傳入畫素值在 0 到 1 之間的影像,請設定do_rescale=False
。 - do_resize (
bool
, 可選) — 是否調整影像大小。 - size (
dict[str, int]
, 可選) — 模型的最大輸入維度。 - default_to_square (
bool
, 可選) — 調整影像大小時是否預設使用正方形,如果大小為整數。 - resample (
Union[PILImageResampling, F.InterpolationMode, NoneType]
) — 調整影像大小時使用的重取樣濾波器。可以是列舉PILImageResampling
之一。僅在do_resize
設定為True
時有效。 - do_center_crop (
bool
, 可選) — 是否中心裁剪影像。 - crop_size (
dict[str, int]
, 可選) — 應用center_crop
後輸出影像的大小。 - do_rescale (
bool
, 可選) — 是否重新縮放影像。 - rescale_factor (
Union[int, float, NoneType]
) — 如果do_rescale
設定為True
,則影像按此比例因子進行重新縮放。 - do_normalize (
bool
, 可選) — 是否對影像進行歸一化。 - image_mean (
Union[float, list[float], NoneType]
) — 用於歸一化的影像均值。僅在do_normalize
設定為True
時有效。 - image_std (
Union[float, list[float], NoneType]
) — 用於歸一化的影像標準差。僅在do_normalize
設定為True
時有效。 - do_convert_rgb (
bool
, 可選) — 是否將影像轉換為 RGB。 - return_tensors (
Union[str, ~utils.generic.TensorType, NoneType]
) — 如果設定為 `pt`,則返回堆疊的張量,否則返回張量列表。 - data_format (
~image_utils.ChannelDimension
, 可選) — 僅支援ChannelDimension.FIRST
。為與慢速處理器相容而新增。 - input_data_format (
Union[str, ~image_utils.ChannelDimension, NoneType]
) — 輸入影像的通道維度格式。如果未設定,通道維度格式將從輸入影像中推斷。可以是以下之一:"channels_first"
或ChannelDimension.FIRST
:影像格式為 (num_channels, height, width)。"channels_last"
或ChannelDimension.LAST
:影像格式為 (height, width, num_channels)。"none"
或ChannelDimension.NONE
:影像格式為 (height, width)。
- device (
torch.device
, optional) — 處理影像的裝置。如果未設定,裝置將從輸入影像中推斷。 - disable_grouping (
bool
, optional) — 是否停用按大小對影像進行分組以單獨處理而不是批次處理。如果為 None,則如果影像在 CPU 上,將設定為 True,否則為 False。此選擇基於經驗觀察,詳細資訊請參見:https://github.com/huggingface/transformers/pull/38157 - apply_ocr (
bool
, optional, 預設為True
) — 是否應用 Tesseract OCR 引擎以獲取單詞 + 標準化邊界框。可以透過preprocess
方法中的apply_ocr
引數覆蓋。 - ocr_lang (
str
, optional) — Tesseract OCR 引擎使用的語言,由其 ISO 程式碼指定。預設使用英語。可以透過preprocess
方法中的ocr_lang
引數覆蓋。 - tesseract_config (
str
, optional) — 呼叫 Tesseract 時轉發到config
引數的任何其他自定義配置標誌。例如:’—psm 6’。可以透過preprocess
方法中的tesseract_config
引數覆蓋。
返回
<class 'transformers.image_processing_base.BatchFeature'>
- data (
dict
) — 由 call 方法返回的列表/陣列/張量字典(“pixel_values”等)。 - tensor_type (
Union[None, str, TensorType]
, 可選) — 您可以在此處提供一個`tensor_type`,以便在初始化時將整數列表轉換為PyTorch/TensorFlow/Numpy張量。
LayoutLMv3Tokenizer
class transformers.LayoutLMv3Tokenizer
< 來源 >( vocab_file merges_file errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = True cls_token_box = [0, 0, 0, 0] sep_token_box = [0, 0, 0, 0] pad_token_box = [0, 0, 0, 0] pad_token_label = -100 only_label_first_subword = True **kwargs )
引數
- vocab_file (
str
) — 詞彙檔案路徑。 - merges_file (
str
) — 合併檔案路徑。 - errors (
str
, optional, 預設為"replace"
) — 解碼位元組到 UTF-8 時遵循的正規化。有關更多資訊,請參閱 bytes.decode。 - bos_token (
str
, optional, 預設為"<s>"
) — 預訓練期間使用的序列開始標記。可作為序列分類器標記使用。使用特殊標記構建序列時,這不是序列開頭使用的標記。使用的標記是
cls_token
。 - eos_token (
str
, optional, 預設為"</s>"
) — 序列結束標記。使用特殊標記構建序列時,這不是序列結束使用的標記。使用的標記是
sep_token
。 - sep_token (
str
, optional, 預設為"</s>"
) — 分隔標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - cls_token (
str
, optional, 預設為"<s>"
) — 分類器標記,用於序列分類(整個序列的分類而非逐標記分類)時使用。它是使用特殊標記構建序列時的第一個標記。 - unk_token (
str
, optional, 預設為"<unk>"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - pad_token (
str
, optional, 預設為"<pad>"
) — 用於填充的標記,例如在對不同長度的序列進行批處理時。 - mask_token (
str
, optional, 預設為"<mask>"
) — 用於掩碼值的標記。這是使用掩碼語言建模訓練此模型時使用的標記。這是模型將嘗試預測的標記。 - add_prefix_space (
bool
, optional, 預設為True
) — 是否在輸入中新增初始空格。這允許將首詞像任何其他詞一樣處理。(RoBERTa tokenizer 透過前面的空格檢測單詞的開頭)。 - cls_token_box (
list[int]
, optional, 預設為[0, 0, 0, 0]
) — 用於特殊 [CLS] 標記的邊界框。 - sep_token_box (
list[int]
, optional, 預設為[0, 0, 0, 0]
) — 用於特殊 [SEP] 標記的邊界框。 - pad_token_box (
list[int]
, optional, 預設為[0, 0, 0, 0]
) — 用於特殊 [PAD] 標記的邊界框。 - pad_token_label (
int
, optional, 預設為 -100) — 用於填充標記的標籤。預設為 -100,這是 PyTorch 的 CrossEntropyLoss 的ignore_index
。 - only_label_first_subword (
bool
, optional, 預設為True
) — 如果提供了詞標籤,是否只標記第一個子詞。
構造一個 LayoutLMv3 分詞器。基於 RoBERTatokenizer
(位元組對編碼或 BPE)。LayoutLMv3Tokenizer 可用於將單詞、單詞級邊界框和可選的單詞標籤轉換為標記級 input_ids
、attention_mask
、token_type_ids
、bbox
和可選的 labels
(用於標記分類)。
此分詞器繼承自 PreTrainedTokenizer,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
LayoutLMv3Tokenizer 執行端到端分詞:標點符號分割和子詞。它還將單詞級邊界框轉換為標記級邊界框。
__call__
< 來源 >( text: typing.Union[str, list[str], list[list[str]]] text_pair: typing.Union[list[str], list[list[str]], NoneType] = None boxes: typing.Union[list[list[int]], list[list[list[int]]], NoneType] = None word_labels: typing.Union[list[int], list[list[int]], NoneType] = 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 padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = 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 **kwargs )
引數
- text (
str
,List[str]
,List[List[str]]
) — 要編碼的序列或序列批次。每個序列可以是一個字串,一個字串列表(單個示例的單詞或批次示例的問題)或一個字串列表的列表(單詞批次)。 - text_pair (
List[str]
,List[List[str]]
) — 要編碼的序列或序列批次。每個序列應為字串列表(預分詞字串)。 - boxes (
List[List[int]]
,List[List[List[int]]]
) — 單詞級邊界框。每個邊界框應標準化為 0-1000 比例。 - word_labels (
List[int]
,List[List[int]]
, optional) — 單詞級整數標籤(用於 FUNSD、CORD 等標記分類任務)。 - add_special_tokens (
bool
, optional, 預設為True
) — 是否使用模型相關的特殊標記對序列進行編碼。 - padding (
bool
,str
or PaddingStrategy, optional, 預設為False
) — 啟用和控制填充。接受以下值:True
或'longest'
:填充到批次中最長的序列(如果只提供一個序列,則不進行填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即,可以輸出包含不同長度序列的批次)。
- truncation (
bool
,str
or TruncationStrategy, optional, 預設為False
) — 啟用和控制截斷。接受以下值:True
或'longest_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。這將逐個標記進行截斷,如果提供了一對序列(或一批序列),則從最長的序列中移除一個標記。'only_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或一批序列),這將只截斷第一個序列。'only_second'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或一批序列),這將只截斷第二個序列。False
或'do_not_truncate'
(預設):不截斷(即,可以輸出序列長度大於模型最大允許輸入大小的批次)。
- max_length (
int
, optional) — 控制截斷/填充引數之一要使用的最大長度。如果未設定或設定為
None
,這將使用預定義的模型最大長度(如果截斷/填充引數之一需要最大長度)。如果模型沒有特定的最大輸入長度(例如 XLNet),則截斷/填充到最大長度將被停用。 - stride (
int
, optional, 預設為 0) — 如果與max_length
一起設定為數字,當return_overflowing_tokens=True
時返回的溢位標記將包含截斷序列末尾的一些標記,以在截斷序列和溢位序列之間提供一些重疊。此引數的值定義了重疊標記的數量。 - pad_to_multiple_of (
int
, optional) — 如果設定,將序列填充到所提供值的倍數。這對於在計算能力>= 7.5
(Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 尤其有用。 - return_tensors (
str
或 TensorType, optional) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- add_special_tokens (
bool
, optional, 預設為True
) — 是否使用模型相關的特殊標記對序列進行編碼。 - padding (
bool
,str
or PaddingStrategy, optional, 預設為False
) — 啟用和控制填充。接受以下值:True
或'longest'
:填充到批次中最長的序列(如果只提供一個序列,則不進行填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即,可以輸出包含不同長度序列的批次)。
- truncation (
bool
,str
or TruncationStrategy, optional, 預設為False
) — 啟用和控制截斷。接受以下值:True
或'longest_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。這將逐個標記進行截斷,如果提供了一對序列(或一批序列),則從最長的序列中移除一個標記。'only_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或一批序列),這將只截斷第一個序列。'only_second'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或一批序列),這將只截斷第二個序列。False
或'do_not_truncate'
(預設):不截斷(即,可以輸出序列長度大於模型最大允許輸入大小的批次)。
- max_length (
int
, optional) — 控制截斷/填充引數之一要使用的最大長度。如果未設定或設定為None
,這將使用預定義的模型最大長度(如果截斷/填充引數之一需要最大長度)。如果模型沒有特定的最大輸入長度(例如 XLNet),則截斷/填充到最大長度將被停用。 - stride (
int
, optional, 預設為 0) — 如果與max_length
一起設定為數字,當return_overflowing_tokens=True
時返回的溢位標記將包含截斷序列末尾的一些標記,以在截斷序列和溢位序列之間提供一些重疊。此引數的值定義了重疊標記的數量。 - pad_to_multiple_of (
int
, optional) — 如果設定,將序列填充到所提供值的倍數。這對於在計算能力>= 7.5
(Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 尤其有用。 - return_tensors (
str
或 TensorType, optional) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
對一個或多個序列或一對序列進行分詞並準備輸入模型的主要方法,其中包含詞級別的歸一化邊界框和可選標籤。
LayoutLMv3TokenizerFast
class transformers.LayoutLMv3TokenizerFast
< 來源 >( vocab_file = None merges_file = None tokenizer_file = None errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = True trim_offsets = True cls_token_box = [0, 0, 0, 0] sep_token_box = [0, 0, 0, 0] pad_token_box = [0, 0, 0, 0] pad_token_label = -100 only_label_first_subword = True **kwargs )
引數
- vocab_file (
str
) — 詞彙檔案路徑。 - merges_file (
str
) — 合併檔案路徑。 - errors (
str
, optional, 預設為"replace"
) — 解碼位元組到 UTF-8 時遵循的正規化。有關更多資訊,請參閱 bytes.decode。 - bos_token (
str
, optional, 預設為"<s>"
) — 預訓練期間使用的序列開始標記。可作為序列分類器標記使用。使用特殊標記構建序列時,這不是序列開頭使用的標記。使用的標記是
cls_token
。 - eos_token (
str
, optional, 預設為"</s>"
) — 序列結束標記。使用特殊標記構建序列時,這不是序列結束使用的標記。使用的標記是
sep_token
。 - sep_token (
str
, optional, 預設為"</s>"
) — 分隔標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - cls_token (
str
, optional, 預設為"<s>"
) — 分類器標記,用於序列分類(整個序列的分類而非逐標記分類)時使用。它是使用特殊標記構建序列時的第一個標記。 - unk_token (
str
, optional, 預設為"<unk>"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - pad_token (
str
, 可選, 預設為"<pad>"
) — 用於填充的標記,例如在對不同長度序列進行批處理時。 - mask_token (
str
, 可選, 預設為"<mask>"
) — 用於遮蓋值的標記。在使用遮蓋語言模型訓練此模型時使用的標記。這是模型將嘗試預測的標記。 - add_prefix_space (
bool
, 可選, 預設為False
) — 是否在輸入中新增初始空格。這使得可以將第一個單詞視為任何其他單詞。(RoBERTa分詞器透過前面的空格檢測單詞的開頭)。 - trim_offsets (
bool
, 可選, 預設為True
) — 後處理步驟是否應修剪偏移量以避免包含空格。 - cls_token_box (
list[int]
, 可選, 預設為[0, 0, 0, 0]
) — 用於特殊 [CLS] 標記的邊界框。 - sep_token_box (
list[int]
, 可選, 預設為[0, 0, 0, 0]
) — 用於特殊 [SEP] 標記的邊界框。 - pad_token_box (
list[int]
, 可選, 預設為[0, 0, 0, 0]
) — 用於特殊 [PAD] 標記的邊界框。 - pad_token_label (
int
, 可選, 預設為 -100) — 用於填充標記的標籤。預設為 -100,這是 PyTorch 的 CrossEntropyLoss 的ignore_index
。 - only_label_first_subword (
bool
, 可選, 預設為True
) — 如果提供了單詞標籤,是否只標記第一個子詞。
構建一個“快速”LayoutLMv3分詞器(由HuggingFace的tokenizers庫支援)。基於BPE。
此分詞器繼承自PreTrainedTokenizerFast,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
__call__
< 源 >( text: typing.Union[str, list[str], list[list[str]]] text_pair: typing.Union[list[str], list[list[str]], NoneType] = None boxes: typing.Union[list[list[int]], list[list[list[int]]], NoneType] = None word_labels: typing.Union[list[int], list[list[int]], NoneType] = 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 padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = 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 **kwargs )
引數
- text (
str
,List[str]
,List[List[str]]
) — 要編碼的序列或序列批次。每個序列可以是字串、字串列表(單個示例的單詞或批次示例的問題)或字串列表的列表(單詞批次)。 - text_pair (
List[str]
,List[List[str]]
) — 要編碼的序列或序列批次。每個序列都應為字串列表(預分詞字串)。 - boxes (
List[List[int]]
,List[List[List[int]]]
) — 單詞級邊界框。每個邊界框應歸一化為 0-1000 比例。 - word_labels (
List[int]
,List[List[int]]
, 可選) — 單詞級整數標籤(用於FUNSD、CORD等標記分類任務)。 - add_special_tokens (
bool
, 可選, 預設為True
) — 是否使用模型相關的特殊標記編碼序列。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為False
) — 啟用和控制填充。接受以下值:True
或'longest'
:填充到批次中最長的序列(如果只提供單個序列,則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即,可以輸出具有不同長度序列的批次)。
- truncation (
bool
,str
或 TruncationStrategy, 可選, 預設為False
) — 啟用和控制截斷。接受以下值:True
或'longest_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次),這將逐個標記進行截斷,從對中最長的序列中移除一個標記。'only_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次),這將只截斷對中的第一個序列。'only_second'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次),這將只截斷對中的第二個序列。False
或'do_not_truncate'
(預設):不截斷(即,可以輸出序列長度大於模型最大允許輸入大小的批次)。
- max_length (
int
, 可選) — 控制截斷/填充引數使用的最大長度。如果未設定或設定為
None
,則如果截斷/填充引數需要最大長度,則將使用預定義模型最大長度。如果模型沒有特定的最大輸入長度(如 XLNet),則截斷/填充到最大長度將被停用。 - stride (
int
, 可選, 預設為 0) — 如果設定為一個數字並與max_length
一起使用,當return_overflowing_tokens=True
時返回的溢位標記將包含截斷序列末尾的一些標記,以在截斷序列和溢位序列之間提供一些重疊。此引數的值定義了重疊標記的數量。 - pad_to_multiple_of (
int
, 可選) — 如果設定,將序列填充到提供的值的倍數。這對於在計算能力>= 7.5
(Volta) 的NVIDIA硬體上啟用 Tensor Cores 特別有用。 - return_tensors (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值有:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- add_special_tokens (
bool
, 可選, 預設為True
) — 是否使用模型相關的特殊標記編碼序列。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為False
) — 啟用和控制填充。接受以下值:True
或'longest'
:填充到批次中最長的序列(如果只提供單個序列,則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即,可以輸出具有不同長度序列的批次)。
- truncation (
bool
,str
或 TruncationStrategy, 可選, 預設為False
) — 啟用和控制截斷。接受以下值:True
或'longest_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次),這將逐個標記進行截斷,從對中最長的序列中移除一個標記。'only_first'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次),這將只截斷對中的第一個序列。'only_second'
:截斷到由引數max_length
指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次),這將只截斷對中的第二個序列。False
或'do_not_truncate'
(預設):不截斷(即,可以輸出序列長度大於模型最大允許輸入大小的批次)。
- max_length (
int
, 可選) — 控制截斷/填充引數使用的最大長度。如果未設定或設定為None
,則如果截斷/填充引數需要最大長度,則將使用預定義模型最大長度。如果模型沒有特定的最大輸入長度(如 XLNet),則截斷/填充到最大長度將被停用。 - stride (
int
, 可選, 預設為 0) — 如果設定為一個數字並與max_length
一起使用,當return_overflowing_tokens=True
時返回的溢位標記將包含截斷序列末尾的一些標記,以在截斷序列和溢位序列之間提供一些重疊。此引數的值定義了重疊標記的數量。 - pad_to_multiple_of (
int
, 可選) — 如果設定,將序列填充到提供的值的倍數。這對於在計算能力>= 7.5
(Volta) 的NVIDIA硬體上啟用 Tensor Cores 特別有用。 - return_tensors (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值有:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
對一個或多個序列或一對序列進行分詞並準備輸入模型的主要方法,其中包含詞級別的歸一化邊界框和可選標籤。
LayoutLMv3Processor
類 transformers.LayoutLMv3Processor
< 源 >( image_processor = 無 tokenizer = 無 **kwargs )
引數
- image_processor (
LayoutLMv3ImageProcessor
, 可選) — LayoutLMv3ImageProcessor 的例項。影像處理器是必需的輸入。 - tokenizer (
LayoutLMv3Tokenizer
或LayoutLMv3TokenizerFast
, 可選) — LayoutLMv3Tokenizer 或 LayoutLMv3TokenizerFast 的例項。分詞器是必需的輸入。
構建一個 LayoutLMv3 處理器,它將 LayoutLMv3 影像處理器和 LayoutLMv3 分詞器組合成一個單一的處理器。
LayoutLMv3Processor 提供了準備模型資料所需的所有功能。
它首先使用LayoutLMv3ImageProcessor 來調整和標準化文件影像大小,並可選地應用 OCR 來獲取單詞和標準化邊界框。然後將這些資訊連同附加引數提供給LayoutLMv3Tokenizer 或LayoutLMv3TokenizerFast,後者將單詞和邊界框轉換為標記級別的 input_ids
、attention_mask
、token_type_ids
、bbox
。可選地,可以提供整數 word_labels
,這些標籤將轉換為標記級別的 labels
以用於標記分類任務(例如 FUNSD、CORD)。
__call__
< 源 >( images text: typing.Union[str, list[str], list[list[str]]] = None text_pair: typing.Union[list[str], list[list[str]], NoneType] = None boxes: typing.Union[list[list[int]], list[list[list[int]]], NoneType] = None word_labels: typing.Union[list[int], list[list[int]], NoneType] = 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 ) → transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
此方法首先將 images
引數轉發到 **call**()。如果 LayoutLMv3ImageProcessor 以 apply_ocr
設定為 True
初始化,它將獲取的單詞和邊界框以及附加引數傳遞給 **call**() 並返回輸出,以及調整大小和標準化的 pixel_values
。如果 LayoutLMv3ImageProcessor 以 apply_ocr
設定為 False
初始化,它將使用者指定的單詞(text
/`text_pair
)和 boxes
以及附加引數傳遞給 **call**() 並返回輸出,以及調整大小和標準化的 pixel_values
。
有關更多資訊,請參閱上述兩種方法的文件字串。
LayoutLMv3Model
類 transformers.LayoutLMv3Model
< 源 >( config )
引數
- config (LayoutLMv3Model) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
裸 Layoutlmv3 模型,輸出原始隱藏狀態,頂部沒有任何特定頭。
此模型繼承自PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。
此模型也是 PyTorch torch.nn.Module 子類。請將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。
前向傳播
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None bbox: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
, 形狀為(batch_size, token_sequence_length)
) — 詞彙表中輸入序列標記的索引。注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是 [CLS] 標記。有關patch_sequence_length
,請參見pixel_values
。索引可以使用 AutoTokenizer 獲得。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.**call**()。
- bbox (
torch.LongTensor
, 形狀為(batch_size, token_sequence_length, 4)
, 可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的標準化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是 [CLS] 標記。有關patch_sequence_length
,請參見pixel_values
。 - attention_mask (
torch.FloatTensor
, 形狀為(batch_size, sequence_length)
, 可選) — 掩碼,用於避免在填充標記索引上執行注意力。掩碼值選擇範圍為[0, 1]
:- 1 表示標記未被遮蓋,
- 0 表示標記被遮蓋。
- token_type_ids (
torch.LongTensor
, 形狀為(batch_size, token_sequence_length)
, 可選) — 段標記索引,用於指示輸入的第一個和第二個部分。索引選擇範圍為[0, 1]
:- 0 對應於*句子A*標記,
- 1 對應於*句子B*標記。
注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是 [CLS] 標記。有關patch_sequence_length
,請參見pixel_values
。 - position_ids (
torch.LongTensor
, 形狀為(batch_size, token_sequence_length)
, 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是 [CLS] 標記。有關patch_sequence_length
,請參見pixel_values
。 - head_mask (
torch.FloatTensor
, 形狀為(num_heads,)
或(num_layers, num_heads)
, 可選) — 掩碼,用於清除自注意力模組中選定的頭。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被遮蓋,
- 0 表示頭部被遮蓋。
- inputs_embeds (
torch.FloatTensor
, 形狀為(batch_size, token_sequence_length, hidden_size)
, 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您想更好地控制如何將*input_ids*索引轉換為關聯向量,而不是模型的內部嵌入查詢矩陣,這將非常有用。 - pixel_values (
torch.FloatTensor
, 形狀為(batch_size, num_channels, image_size, image_size)
, 可選) — 對應於輸入影像的張量。畫素值可以使用{image_processor_class}
獲得。有關詳細資訊,請參閱{image_processor_class}.__call__
({processor_class}
使用{image_processor_class}
進行影像處理)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.BaseModelOutput 或 torch.FloatTensor
的元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),包含根據配置 (LayoutLMv3Config) 和輸入的不同元素。
-
last_hidden_state (
torch.FloatTensor
, 形狀為(batch_size, sequence_length, hidden_size)
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(torch.FloatTensor)
, 可選, 當output_hidden_states=True
被傳遞或當config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型具有嵌入層,則一個用於嵌入的輸出,加上每個層的一個輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
, 可選, 當output_attentions=True
被傳遞或當config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
LayoutLMv3Model 的前向方法,覆蓋了 __call__
特殊方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, AutoModel
>>> from datasets import load_dataset
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = AutoModel.from_pretrained("microsoft/layoutlmv3-base")
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, words, boxes=boxes, return_tensors="pt")
>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state
LayoutLMv3ForSequenceClassification
類 transformers.LayoutLMv3ForSequenceClassification
< 源 >( config )
引數
- config (LayoutLMv3ForSequenceClassification) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
帶序列分類頭的 LayoutLMv3 模型([CLS] 標記最終隱藏狀態頂部的線性層),例如用於文件影像分類任務,如 RVL-CDIP 資料集。
此模型繼承自PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。
此模型也是 PyTorch torch.nn.Module 子類。請將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。
前向傳播
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None bbox: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- token_type_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引選擇在[0, 1]
之間:- 0 對應於**句子 A** 標記,
- 1 對應於**句子 B** 標記。
- position_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 輸入序列中每個標記在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部**未被掩碼**,
- 0 表示頭部**被掩碼**。
- inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以直接傳遞嵌入表示而不是傳遞input_ids
。如果您希望對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這會很有用。 - labels (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於計算掩碼語言建模損失的標籤。索引應在[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 而不是普通的元組。 - bbox (
torch.LongTensor
,形狀為(batch_size, sequence_length, 4)
,可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的標準化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。 - pixel_values (
torch.LongTensor
,形狀為(batch_size, num_channels, image_size, image_size)
,可選) — 對應於輸入影像的張量。畫素值可以使用{image_processor_class}
獲得。有關詳細資訊,請參見{image_processor_class}.__call__
({processor_class}
使用{image_processor_class}
處理影像)。
返回
transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.SequenceClassifierOutput 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),其中包含根據配置 (LayoutLMv3Config) 和輸入的不同元素。
-
loss (形狀為
(1,)
的torch.FloatTensor
,可選,當提供labels
時返回) — 分類損失(如果 config.num_labels==1,則為迴歸損失)。 -
logits (形狀為
(batch_size, config.num_labels)
的torch.FloatTensor
) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可選, 當output_hidden_states=True
被傳遞或當config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型具有嵌入層,則一個用於嵌入的輸出,加上每個層的一個輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
, 可選, 當output_attentions=True
被傳遞或當config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
LayoutLMv3ForSequenceClassification 的前向方法,覆蓋了 __call__
特殊方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, AutoModelForSequenceClassification
>>> from datasets import load_dataset
>>> import torch
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/layoutlmv3-base")
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, words, boxes=boxes, return_tensors="pt")
>>> sequence_label = torch.tensor([1])
>>> outputs = model(**encoding, labels=sequence_label)
>>> loss = outputs.loss
>>> logits = outputs.logits
LayoutLMv3ForTokenClassification
class transformers.LayoutLMv3ForTokenClassification
< 源 >( config )
引數
- config (LayoutLMv3ForTokenClassification) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
LayoutLMv3 模型,其頂部有一個標記分類頭(最終隱藏狀態頂部的一個線性層),例如用於序列標註(資訊提取)任務,如 FUNSD、SROIE、CORD 和 Kleister-NDA。
此模型繼承自PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。
此模型也是 PyTorch torch.nn.Module 子類。請將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。
前向傳播
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None bbox: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None pixel_values: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
torch.LongTensor
,形狀為(batch_size, sequence_length, 4)
,可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的標準化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。 - attention_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- token_type_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引選擇在[0, 1]
之間:- 0 對應於**句子 A** 標記,
- 1 對應於**句子 B** 標記。
- position_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 輸入序列中每個標記在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部**未被掩碼**,
- 0 表示頭部**被掩碼**。
- inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以直接傳遞嵌入表示而不是傳遞input_ids
。如果您希望對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這會很有用。 - labels (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於計算標記分類損失的標籤。索引應在[0, ..., config.num_labels - 1]
之間。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。 - pixel_values (
torch.LongTensor
,形狀為(batch_size, num_channels, image_size, image_size)
,可選) — 對應於輸入影像的張量。畫素值可以使用{image_processor_class}
獲得。有關詳細資訊,請參見{image_processor_class}.__call__
({processor_class}
使用{image_processor_class}
處理影像)。
返回
transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.TokenClassifierOutput 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),其中包含根據配置 (LayoutLMv3Config) 和輸入的不同元素。
-
loss (形狀為
(1,)
的torch.FloatTensor
,可選,當提供labels
時返回) — 分類損失。 -
logits (形狀為
(batch_size, sequence_length, config.num_labels)
的torch.FloatTensor
) — 分類分數(SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可選, 當output_hidden_states=True
被傳遞或當config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型具有嵌入層,則一個用於嵌入的輸出,加上每個層的一個輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
, 可選, 當output_attentions=True
被傳遞或當config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
LayoutLMv3ForTokenClassification 的前向方法,覆蓋了 __call__
特殊方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, AutoModelForTokenClassification
>>> from datasets import load_dataset
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = AutoModelForTokenClassification.from_pretrained("microsoft/layoutlmv3-base", num_labels=7)
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> word_labels = example["ner_tags"]
>>> encoding = processor(image, words, boxes=boxes, word_labels=word_labels, return_tensors="pt")
>>> outputs = model(**encoding)
>>> loss = outputs.loss
>>> logits = outputs.logits
LayoutLMv3ForQuestionAnswering
class transformers.LayoutLMv3ForQuestionAnswering
< 源 >( config )
引數
- config (LayoutLMv3ForQuestionAnswering) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
Layoutlmv3 轉換器,其頂部有一個跨度分類頭,用於像 SQuAD 這樣的抽取式問答任務(在隱藏狀態輸出頂部有一個線性層,用於計算 `span start logits` 和 `span end logits`)。
此模型繼承自PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。
此模型也是 PyTorch torch.nn.Module 子類。請將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。
前向傳播
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None start_positions: typing.Optional[torch.LongTensor] = None end_positions: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None bbox: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- token_type_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引選擇在[0, 1]
之間:- 0 對應於**句子 A** 標記,
- 1 對應於**句子 B** 標記。
- position_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 輸入序列中每個標記在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部**未被掩碼**,
- 0 表示頭部**被掩碼**。
- inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以直接傳遞嵌入表示而不是傳遞input_ids
。如果您希望對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這會很有用。 - start_positions (
torch.LongTensor
,形狀為(batch_size,)
,可選) — 用於計算標記分類損失的標註跨度起始位置(索引)的標籤。位置將被限制為序列的長度 (sequence_length
)。序列之外的位置不計入損失計算。 - end_positions (
torch.LongTensor
,形狀為(batch_size,)
,可選) — 用於計算標記分類損失的標註跨度結束位置(索引)的標籤。位置將被限制為序列的長度 (sequence_length
)。序列之外的位置不計入損失計算。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。 - bbox (
torch.LongTensor
,形狀為(batch_size, sequence_length, 4)
,可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的標準化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。 - pixel_values (
torch.LongTensor
,形狀為(batch_size, num_channels, image_size, image_size)
,可選) — 對應於輸入影像的張量。畫素值可以使用{image_processor_class}
獲得。有關詳細資訊,請參見{image_processor_class}.__call__
({processor_class}
使用{image_processor_class}
處理影像)。
返回
transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.QuestionAnsweringModelOutput 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),其中包含根據配置 (LayoutLMv3Config) 和輸入的不同元素。
-
loss (
torch.FloatTensor
of shape(1,)
, 可選, 當提供labels
時返回) — 總範圍提取損失是起始位置和結束位置的交叉熵之和。 -
start_logits (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 範圍起始分數(SoftMax 之前)。 -
end_logits (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 範圍結束分數(SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可選, 當output_hidden_states=True
被傳遞或當config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型具有嵌入層,則一個用於嵌入的輸出,加上每個層的一個輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
, 可選, 當output_attentions=True
被傳遞或當config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
LayoutLMv3ForQuestionAnswering 的前向方法,覆蓋了 __call__
特殊方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, AutoModelForQuestionAnswering
>>> from datasets import load_dataset
>>> import torch
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = AutoModelForQuestionAnswering.from_pretrained("microsoft/layoutlmv3-base")
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> question = "what's his name?"
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, question, words, boxes=boxes, return_tensors="pt")
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])
>>> outputs = model(**encoding, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss
>>> start_scores = outputs.start_logits
>>> end_scores = outputs.end_logits
TFLayoutLMv3Model
類 transformers.TFLayoutLMv3Model
< 源 >( 配置 *輸入 **kwargs )
引數
- config (LayoutLMv3Config) — 模型配置類,包含模型的所有引數。用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
不帶任何特定頭部的純LayoutLMv3模型,輸出原始隱藏狀態。此模型繼承自 TFPreTrainedModel。請檢視父類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 keras.Model 的子類。請將其作為常規的TF 2.0 Keras模型使用,並參考TF 2.0文件以瞭解與通用用法和行為相關的所有事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在將輸入傳遞給模型和層時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞您的輸入和標籤即可!但是,如果您想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,您可以使用三種方法將所有輸入張量收集到第一個位置引數中
- 只有一個
input_ids
的單個張量,沒有其他:model(input_ids)
- 長度可變的列表,包含一個或多個輸入張量,按文件字串中給出的順序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一個字典,其中包含一個或多個與文件字串中給出的輸入名稱關聯的輸入張量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
請注意,當使用子類化建立模型和層時,您無需擔心這些,因為您可以像傳遞給任何其他 Python 函式一樣傳遞輸入!
呼叫
< 源 >( input_ids: tf.Tensor | None = None bbox: tf.Tensor | None = None attention_mask: tf.Tensor | None = None token_type_ids: tf.Tensor | None = None position_ids: tf.Tensor | None = None head_mask: tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None pixel_values: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → transformers.modeling_tf_outputs.TFBaseModelOutput 或 tuple(tf.Tensor)
引數
- input_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列標記的索引。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length, 4)
,可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的歸一化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - pixel_values (
tf.Tensor
,形狀為(batch_size, num_channels, height, width)
) — 文件影像批次。每張影像被分成形狀為(num_channels, config.patch_size, config.patch_size)
的補丁,補丁的總數(=patch_sequence_length
)等於((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 掩碼,用於避免對填充標記索引執行注意力操作。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
用於 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 分段標記索引,用於指示輸入的第一和第二部分。索引選擇在[0, 1]
之間:- 0 對應於句子 A 標記,
- 1 對應於句子 B 標記。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - position_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - head_mask (
tf.Tensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 掩碼,用於使自注意力模組的選定頭部無效。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- inputs_embeds (
tf.Tensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您想對如何將input_ids索引轉換為相關向量比模型的內部嵌入查詢矩陣有更多的控制,這會很有用。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量中的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量中的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是純元組。
返回
transformers.modeling_tf_outputs.TFBaseModelOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFBaseModelOutput 或一個 tf.Tensor
的元組(如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置(LayoutLMv3Config)和輸入的不同元素。
-
last_hidden_state (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(tf.FloatTensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
TFLayoutLMv3Model 前向方法,覆蓋 __call__
特殊方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, TFAutoModel
>>> from datasets import load_dataset
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = TFAutoModel.from_pretrained("microsoft/layoutlmv3-base")
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, words, boxes=boxes, return_tensors="tf")
>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state
TFLayoutLMv3ForSequenceClassification
類 transformers.TFLayoutLMv3ForSequenceClassification
< 源 >( 配置: LayoutLMv3Config **kwargs )
引數
- config (LayoutLMv3Config) — 模型配置類,包含模型的所有引數。用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
帶序列分類頭的 LayoutLMv3 模型([CLS] 標記最終隱藏狀態頂部的線性層),例如用於文件影像分類任務,如 RVL-CDIP 資料集。
此模型繼承自 TFPreTrainedModel。請檢視父類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 keras.Model 的子類。請將其作為常規的TF 2.0 Keras模型使用,並參考TF 2.0文件以瞭解與通用用法和行為相關的所有事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在將輸入傳遞給模型和層時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞您的輸入和標籤即可!但是,如果您想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,您可以使用三種方法將所有輸入張量收集到第一個位置引數中
- 只有一個
input_ids
的單個張量,沒有其他:model(input_ids)
- 長度可變的列表,包含一個或多個輸入張量,按文件字串中給出的順序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一個字典,其中包含一個或多個與文件字串中給出的輸入名稱關聯的輸入張量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
請注意,當使用子類化建立模型和層時,您無需擔心這些,因為您可以像傳遞給任何其他 Python 函式一樣傳遞輸入!
呼叫
< 源 >( input_ids: tf.Tensor | None = None attention_mask: tf.Tensor | None = None token_type_ids: tf.Tensor | None = None position_ids: tf.Tensor | None = None head_mask: tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None labels: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None bbox: tf.Tensor | None = None pixel_values: tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或 tuple(tf.Tensor)
引數
- input_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列標記的索引。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length, 4)
,可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的歸一化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - pixel_values (
tf.Tensor
,形狀為(batch_size, num_channels, height, width)
) — 文件影像批次。每張影像被分成形狀為(num_channels, config.patch_size, config.patch_size)
的補丁,補丁的總數(=patch_sequence_length
)等於((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 掩碼,用於避免對填充標記索引執行注意力操作。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
用於 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 分段標記索引,用於指示輸入的第一和第二部分。索引選擇在[0, 1]
之間:- 0 對應於句子 A 標記,
- 1 對應於句子 B 標記。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - position_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - head_mask (
tf.Tensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 掩碼,用於使自注意力模組的選定頭部無效。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- inputs_embeds (
tf.Tensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您想對如何將input_ids索引轉換為相關向量比模型的內部嵌入查詢矩陣有更多的控制,這會很有用。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量中的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量中的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是純元組。
返回
transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一個 tf.Tensor
的元組(如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置(LayoutLMv3Config)和輸入的不同元素。
-
loss (
tf.Tensor
,形狀為(batch_size, )
,可選,當提供labels
時返回) — 分類損失(如果 config.num_labels==1,則為迴歸損失)。 -
logits (
tf.Tensor
,形狀為(batch_size, config.num_labels)
) — 分類(或迴歸,如果 config.num_labels==1)分數(SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
TFLayoutLMv3ForSequenceClassification 前向方法,覆蓋 __call__
特殊方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, TFAutoModelForSequenceClassification
>>> from datasets import load_dataset
>>> import tensorflow as tf
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = TFAutoModelForSequenceClassification.from_pretrained("microsoft/layoutlmv3-base")
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, words, boxes=boxes, return_tensors="tf")
>>> sequence_label = tf.convert_to_tensor([1])
>>> outputs = model(**encoding, labels=sequence_label)
>>> loss = outputs.loss
>>> logits = outputs.logits
TFLayoutLMv3ForTokenClassification
類 transformers.TFLayoutLMv3ForTokenClassification
< 源 >( 配置: LayoutLMv3Config **kwargs )
引數
- config (LayoutLMv3Config) — 模型配置類,包含模型的所有引數。用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
LayoutLMv3 模型,其頂部有一個標記分類頭(最終隱藏狀態頂部的一個線性層),例如用於序列標註(資訊提取)任務,如 FUNSD、SROIE、CORD 和 Kleister-NDA。
此模型繼承自 TFPreTrainedModel。請檢視父類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 keras.Model 的子類。請將其作為常規的TF 2.0 Keras模型使用,並參考TF 2.0文件以瞭解與通用用法和行為相關的所有事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在將輸入傳遞給模型和層時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞您的輸入和標籤即可!但是,如果您想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,您可以使用三種方法將所有輸入張量收集到第一個位置引數中
- 只有一個
input_ids
的單個張量,沒有其他:model(input_ids)
- 長度可變的列表,包含一個或多個輸入張量,按文件字串中給出的順序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一個字典,其中包含一個或多個與文件字串中給出的輸入名稱關聯的輸入張量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
請注意,當使用子類化建立模型和層時,您無需擔心這些,因為您可以像傳遞給任何其他 Python 函式一樣傳遞輸入!
呼叫
< 源 >( input_ids: tf.Tensor | None = None bbox: tf.Tensor | None = None attention_mask: tf.Tensor | None = None token_type_ids: tf.Tensor | None = None position_ids: tf.Tensor | None = None head_mask: tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None labels: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None pixel_values: tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFTokenClassifierOutput 或 tuple(tf.Tensor)
引數
- input_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列標記的索引。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length, 4)
,可選) — 每個輸入序列標記的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的歸一化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - pixel_values (
tf.Tensor
,形狀為(batch_size, num_channels, height, width)
) — 文件影像批次。每張影像被分成形狀為(num_channels, config.patch_size, config.patch_size)
的補丁,補丁的總數(=patch_sequence_length
)等於((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 掩碼,用於避免對填充標記索引執行注意力操作。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
用於 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 分段標記索引,用於指示輸入的第一和第二部分。索引選擇在[0, 1]
之間:- 0 對應於句子 A 標記,
- 1 對應於句子 B 標記。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
表示 [CLS] 標記。有關patch_sequence_length
,請參閱pixel_values
。 - position_ids (形狀為
(batch_size, sequence_length)
的Numpy 陣列
或tf.Tensor
,可選) — 每個輸入序列令牌在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是指 [CLS] 令牌。有關patch_sequence_length
,請參閱pixel_values
。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
,可選) — 用於使自注意力模組的選定頭部失效的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩蓋,
- 0 表示頭部被掩蓋。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果你想對如何將 *input_ids* 索引轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制,這很有用。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。 - labels (形狀為
(batch_size, sequence_length)
的tf.Tensor
,可選) — 用於計算令牌分類損失的標籤。索引應在[0, ..., config.num_labels - 1]
之間。
返回
transformers.modeling_tf_outputs.TFTokenClassifierOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFTokenClassifierOutput 或一個 tf.Tensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置 (LayoutLMv3Config) 和輸入的不同元素。
-
loss (
tf.Tensor
,形狀為(n,)
,可選,其中 n 是未被掩蓋的標籤數量,當提供labels
時返回) — 分類損失。 -
logits (
tf.Tensor
,形狀為(batch_size, sequence_length, config.num_labels)
) — 分類分數(SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
TFLayoutLMv3ForTokenClassification 的前向方法覆蓋了特殊的 __call__
方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, TFAutoModelForTokenClassification
>>> from datasets import load_dataset
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = TFAutoModelForTokenClassification.from_pretrained("microsoft/layoutlmv3-base", num_labels=7)
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> word_labels = example["ner_tags"]
>>> encoding = processor(image, words, boxes=boxes, word_labels=word_labels, return_tensors="tf")
>>> outputs = model(**encoding)
>>> loss = outputs.loss
>>> logits = outputs.logits
TFLayoutLMv3ForQuestionAnswering
class transformers.TFLayoutLMv3ForQuestionAnswering
< source >( 配置: LayoutLMv3Config **kwargs )
引數
- config (LayoutLMv3Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
LayoutLMv3 模型,在頂部帶有一個用於抽取式問答任務(如 DocVQA)的跨度分類頭(在隱藏狀態輸出的文字部分上方的線性層,用於計算 span start logits
和 span end logits
)。
此模型繼承自 TFPreTrainedModel。請檢視父類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 keras.Model 的子類。請將其作為常規的TF 2.0 Keras模型使用,並參考TF 2.0文件以瞭解與通用用法和行為相關的所有事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在將輸入傳遞給模型和層時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞您的輸入和標籤即可!但是,如果您想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,您可以使用三種方法將所有輸入張量收集到第一個位置引數中
- 只有一個
input_ids
的單個張量,沒有其他:model(input_ids)
- 長度可變的列表,包含一個或多個輸入張量,按文件字串中給出的順序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一個字典,其中包含一個或多個與文件字串中給出的輸入名稱關聯的輸入張量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
請注意,當使用子類化建立模型和層時,您無需擔心這些,因為您可以像傳遞給任何其他 Python 函式一樣傳遞輸入!
呼叫
< source >( input_ids: tf.Tensor | None = None attention_mask: tf.Tensor | None = None token_type_ids: tf.Tensor | None = None position_ids: tf.Tensor | None = None head_mask: tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None start_positions: tf.Tensor | None = None end_positions: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None bbox: tf.Tensor | None = None pixel_values: tf.Tensor | None = None return_dict: Optional[bool] = None training: bool = False ) → transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或 tuple(tf.Tensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的Numpy 陣列
或tf.Tensor
) — 詞彙表中輸入序列令牌的索引。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是指 [CLS] 令牌。有關patch_sequence_length
,請參閱pixel_values
。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (形狀為
(batch_size, sequence_length, 4)
的Numpy 陣列
或tf.Tensor
,可選) — 每個輸入序列令牌的邊界框。選擇範圍為[0, config.max_2d_position_embeddings-1]
。每個邊界框應為 (x0, y0, x1, y1) 格式的歸一化版本,其中 (x0, y0) 對應於邊界框左上角的位置,(x1, y1) 表示右下角的位置。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是指 [CLS] 令牌。有關patch_sequence_length
,請參閱pixel_values
。 - pixel_values (形狀為
(batch_size, num_channels, height, width)
的tf.Tensor
) — 文件影像批次。每個影像被分成形狀為(num_channels, config.patch_size, config.patch_size)
的補丁,補丁總數 (=patch_sequence_length
) 等於((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
,可選) — 用於避免對填充令牌索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示令牌未被掩蓋,
- 0 表示令牌被掩蓋。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是指 [CLS] 令牌。有關patch_sequence_length
,請參閱pixel_values
。 - token_type_ids (形狀為
(batch_size, sequence_length)
的Numpy 陣列
或tf.Tensor
,可選) — 分段令牌索引,用於指示輸入的第一個和第二個部分。索引選擇在[0, 1]
之間:- 0 對應於 *句子 A* 令牌,
- 1 對應於 *句子 B* 令牌。
請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是指 [CLS] 令牌。有關patch_sequence_length
,請參閱pixel_values
。 - position_ids (形狀為
(batch_size, sequence_length)
的Numpy 陣列
或tf.Tensor
,可選) — 每個輸入序列令牌在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。請注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
是指 [CLS] 令牌。有關patch_sequence_length
,請參閱pixel_values
。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
,可選) — 用於使自注意力模組的選定頭部失效的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩蓋,
- 0 表示頭部被掩蓋。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果你想對如何將 *input_ids* 索引轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制,這很有用。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。 - start_positions (形狀為
(batch_size,)
的tf.Tensor
,可選) — 用於計算令牌分類損失的標記跨度開始位置(索引)的標籤。位置被限制在序列長度(sequence_length
)範圍內。序列外部的位置不計入損失計算。 - end_positions (形狀為
(batch_size,)
的tf.Tensor
,可選) — 用於計算令牌分類損失的標記跨度結束位置(索引)的標籤。位置被限制在序列長度(sequence_length
)範圍內。序列外部的位置不計入損失計算。
返回
transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或一個 tf.Tensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置 (LayoutLMv3Config) 和輸入的不同元素。
-
loss (形狀為
(batch_size, )
的tf.Tensor
,可選,在提供start_positions
和end_positions
時返回) — 總跨度提取損失是起始位置和結束位置的交叉熵之和。 -
start_logits (形狀為
(batch_size, sequence_length)
的tf.Tensor
) — 跨度起始分數(SoftMax 之前)。 -
end_logits (形狀為
(batch_size, sequence_length)
的tf.Tensor
) — 跨度結束分數(SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
TFLayoutLMv3ForQuestionAnswering 的前向方法覆蓋了特殊的 __call__
方法。
雖然前向傳播的配方需要在此函式中定義,但在此之後應該呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, TFAutoModelForQuestionAnswering
>>> from datasets import load_dataset
>>> import tensorflow as tf
>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
>>> model = TFAutoModelForQuestionAnswering.from_pretrained("microsoft/layoutlmv3-base")
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> question = "what's his name?"
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, question, words, boxes=boxes, return_tensors="tf")
>>> start_positions = tf.convert_to_tensor([1])
>>> end_positions = tf.convert_to_tensor([3])
>>> outputs = model(**encoding, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss
>>> start_scores = outputs.start_logits
>>> end_scores = outputs.end_logits