Transformers 文档
LayoutLMv3
并获得增强的文档体验
开始使用
LayoutLMv3
概述
LayoutLMv3 模型在 LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking 中提出,作者为 Yupan Huang、Tengchao Lv、Lei Cui、Yutong Lu、Furu Wei。LayoutLMv3 通过使用 patch embeddings(如 ViT 中所示)而不是利用 CNN 主干,简化了 LayoutLMv2,并在 3 个目标上预训练模型:masked language modeling (MLM)、masked image modeling (MIM) 和 word-patch alignment (WPA)。
论文摘要如下:
自监督预训练技术在文档人工智能领域取得了显著进展。大多数多模态预训练模型使用 masked language modeling 目标来学习文本模态上的双向表示,但它们在图像模态的预训练目标上有所不同。这种差异增加了多模态表示学习的难度。在本文中,我们提出了 LayoutLMv3,通过统一的文本和图像掩码预训练用于文档人工智能的多模态 Transformer。此外,LayoutLMv3 还使用 word-patch alignment 目标进行预训练,通过预测文本单词的相应图像 patch 是否被掩码来学习跨模态对齐。简单的统一架构和训练目标使 LayoutLMv3 成为通用的预训练模型,适用于以文本为中心和以图像为中心的文档人工智能任务。实验结果表明,LayoutLMv3 不仅在以文本为中心的任务(包括表单理解、收据理解和文档视觉问答)中,而且在以图像为中心的任务(如文档图像分类和文档布局分析)中,都实现了最先进的性能。

此模型由 nielsr 贡献。此模型的 TensorFlow 版本由 chriskoo、tokec 和 lre 添加。原始代码可以在这里找到。
使用技巧
- 在数据处理方面,LayoutLMv3 与其前身 LayoutLMv2 相同,除了:
- 图像需要调整大小并以常规 RGB 格式标准化通道。另一方面,LayoutLMv2 在内部标准化图像,并期望通道采用 BGR 格式。
- 文本使用 byte-pair encoding (BPE) 进行分词,而不是 WordPiece。由于数据预处理中的这些差异,可以使用 LayoutLMv3Processor,它在内部结合了 LayoutLMv3ImageProcessor(用于图像模态)和 LayoutLMv3Tokenizer/LayoutLMv3TokenizerFast(用于文本模态),以准备模型的所有数据。
- 关于 LayoutLMv3Processor 的使用,我们参考其前身 使用指南。
资源
以下是官方 Hugging Face 和社区(🌎 表示)资源列表,可帮助您开始使用 LayoutLMv3。如果您有兴趣提交资源以包含在此处,请随时打开 Pull Request,我们将对其进行审核!资源最好能展示一些新的东西,而不是重复现有的资源。
LayoutLMv3 几乎与 LayoutLMv2 相同,因此我们也包括了您可以为 LayoutLMv3 任务调整的 LayoutLMv2 资源。对于这些 notebook,在为模型准备数据时,请注意使用 LayoutLMv2Processor!
- LayoutLMv3ForTokenClassification 由此示例脚本和notebook支持。
- 关于如何使用 LayoutLMv2ForTokenClassification 执行推理的notebook,以及关于当没有标签可用时如何使用 LayoutLMv2ForTokenClassification 执行推理的notebook。
- 关于如何使用 🤗 Trainer 微调 LayoutLMv2ForTokenClassification 的notebook。
- Token 分类任务指南
文档问答
LayoutLMv3Config
class transformers.LayoutLMv3Config
< source >( 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
, optional, defaults to 768) — 编码器层和池化层的维度。 - num_hidden_layers (
int
, optional, defaults to 12) — Transformer 编码器中隐藏层的数量。 - num_attention_heads (
int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。 - intermediate_size (
int
, optional, defaults to 3072) — Transformer 编码器中“中间层”(即,前馈层)的维度。 - hidden_act (
str
或function
, optional, defaults to"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。 如果是字符串,则支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, optional, defaults to 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 - attention_probs_dropout_prob (
float
, optional, defaults to 0.1) — 注意力概率的 dropout 比率。 - max_position_embeddings (
int
, optional, defaults to 512) — 此模型可能使用的最大序列长度。 通常将其设置为较大的值以防万一(例如,512 或 1024 或 2048)。 - type_vocab_size (
int
, optional, defaults to 2) — 调用 LayoutLMv3Model 时传递的token_type_ids
的词汇表大小。 - initializer_range (
float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。 - layer_norm_eps (
float
, optional, defaults to 1e-5) — 层归一化层使用的 epsilon 值。 - max_2d_position_embeddings (
int
, optional, defaults to 1024) — 2D 位置嵌入可能使用的最大值。 通常将其设置为较大的值以防万一(例如,1024)。 - coordinate_size (
int
, optional, defaults to128
) — 坐标嵌入的维度。 - shape_size (
int
, optional, defaults to128
) — 宽度和高度嵌入的维度。 - has_relative_attention_bias (
bool
, optional, defaults toTrue
) — 是否在自注意力机制中使用相对注意力偏差。 - rel_pos_bins (
int
, optional, defaults to 32) — 自注意力机制中要使用的相对位置 bins 的数量。 - max_rel_pos (
int
, optional, defaults to 128) — 自注意力机制中要使用的最大相对位置数。 - max_rel_2d_pos (
int
, optional, defaults to 256) — 自注意力机制中最大 2D 相对位置数。 - rel_2d_pos_bins (
int
, optional, defaults to 64) — 自注意力机制中 2D 相对位置 bins 的数量。 - has_spatial_attention_bias (
bool
, optional, defaults toTrue
) — 是否在自注意力机制中使用空间注意力偏差。 - visual_embed (
bool
, optional, defaults toTrue
) — 是否添加 patch 嵌入。 - input_size (
int
, optional, defaults to224
) — 图像的大小(分辨率)。 - num_channels (
int
, optional, defaults to3
) — 图像的通道数。 - patch_size (
int
, optional, defaults to16
) — patches 的大小(分辨率)。 - classifier_dropout (
float
, optional) — 分类头的 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
< source >( do_resize: bool = True size: typing.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, typing.Iterable[float]] = None image_std: typing.Union[float, typing.Iterable[float]] = None apply_ocr: bool = True ocr_lang: typing.Optional[str] = None tesseract_config: typing.Optional[str] = '' **kwargs )
参数
- do_resize (
bool
, optional, defaults toTrue
) — 是否将图像的 (height, width) 尺寸调整为(size["height"], size["width"])
。可以被preprocess
中的do_resize
参数覆盖。 - size (
Dict[str, int]
optional, defaults to{"height" -- 224, "width": 224}
): 调整大小后图像的尺寸。可以被preprocess
中的size
参数覆盖。 - resample (
PILImageResampling
, optional, defaults toPILImageResampling.BILINEAR
) — 如果调整图像大小,则使用的重采样滤波器。可以被preprocess
中的resample
参数覆盖。 - do_rescale (
bool
, optional, defaults toTrue
) — 是否按指定的rescale_value
缩放图像的像素值。可以被preprocess
中的do_rescale
参数覆盖。 - rescale_factor (
float
, optional, defaults to 1 / 255) — 图像像素值将被缩放的值。可以被preprocess
中的rescale_factor
参数覆盖。 - do_normalize (
bool
, optional, defaults toTrue
) — 是否对图像进行归一化。可以被preprocess
方法中的do_normalize
参数覆盖。 - image_mean (
Iterable[float]
orfloat
, optional, defaults toIMAGENET_STANDARD_MEAN
) — 如果对图像进行归一化,则使用的均值。这是一个浮点数或浮点数列表,其长度为图像中通道的数量。可以被preprocess
方法中的image_mean
参数覆盖。 - image_std (
Iterable[float]
orfloat
, optional, defaults toIMAGENET_STANDARD_STD
) — 如果对图像进行归一化,则使用的标准差。这是一个浮点数或浮点数列表,其长度为图像中通道的数量。可以被preprocess
方法中的image_std
参数覆盖。 - apply_ocr (
bool
, optional, defaults toTrue
) — 是否应用 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
参数覆盖。
构建 LayoutLMv3 图像处理器。
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] do_resize: bool = None size: typing.Dict[str, int] = None resample = None do_rescale: bool = None rescale_factor: float = None do_normalize: bool = None image_mean: typing.Union[float, typing.Iterable[float]] = None image_std: typing.Union[float, typing.Iterable[float]] = None apply_ocr: 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
, optional, defaults toself.do_resize
) — 是否调整图像大小。 - size (
Dict[str, int]
, optional, defaults toself.size
) — 应用resize
后输出图像的期望尺寸。 - resample (
int
, optional, defaults toself.resample
) — 如果调整图像大小,则使用的重采样滤波器。这可以是PILImageResampling
滤波器之一。仅当do_resize
设置为True
时才有效。 - do_rescale (
bool
, optional, defaults toself.do_rescale
) — 是否将图像像素值缩放到 [0, 1] 之间。 - rescale_factor (
float
, optional, defaults toself.rescale_factor
) — 应用于图像像素值的缩放因子。仅当do_rescale
设置为True
时才有效。 - do_normalize (
bool
, optional, defaults toself.do_normalize
) — 是否对图像进行归一化。 - image_mean (
float
orIterable[float]
, optional, defaults toself.image_mean
) — 用于归一化的均值。仅当do_normalize
设置为True
时才有效。 - image_std (
float
orIterable[float]
, optional, defaults toself.image_std
) — 用于归一化的标准差值。仅当do_normalize
设置为True
时才有效。 - apply_ocr (
bool
, optional, defaults toself.apply_ocr
) — 是否应用 Tesseract OCR 引擎来获取单词 + 归一化边界框。 - ocr_lang (
str
, optional, defaults toself.ocr_lang
) — Tesseract OCR 引擎使用的语言,由其 ISO 代码指定。默认情况下,使用英语。 - tesseract_config (
str
, optional, defaults toself.tesseract_config
) — 传递给调用 Tesseract 时的config
参数的任何其他自定义配置标志。 - return_tensors (
str
orTensorType
, optional) — 返回张量的类型。可以是以下之一:- Unset: 返回
np.ndarray
列表。 TensorType.TENSORFLOW
或'tf'
: 返回tf.Tensor
类型的批次。TensorType.PYTORCH
或'pt'
: 返回torch.Tensor
类型的批次。TensorType.NUMPY
或'np'
: 返回np.ndarray
类型的批次。TensorType.JAX
或'jax'
: 返回jax.numpy.ndarray
类型的批次。
- Unset: 返回
- data_format (
ChannelDimension
orstr
, optional, defaults toChannelDimension.FIRST
) — 输出图像的通道维度格式。可以是以下之一:ChannelDimension.FIRST
: 图像格式为 (num_channels, height, width)。ChannelDimension.LAST
: 图像格式为 (height, width, num_channels)。
- input_data_format (
ChannelDimension
orstr
, optional) — 输入图像的通道维度格式。如果未设置,则通道维度格式从输入图像推断。可以是以下之一:"channels_first"
或ChannelDimension.FIRST
: 图像格式为 (num_channels, height, width)。"channels_last"
或ChannelDimension.LAST
: 图像格式为 (height, width, num_channels)。"none"
或ChannelDimension.NONE
: 图像格式为 (height, width)。
预处理一个图像或一批图像。
LayoutLMv3Tokenizer
class transformers.LayoutLMv3Tokenizer
< source >( 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
) — merges 文件的路径。 - errors (
str
, optional, defaults to"replace"
) — 将字节解码为 UTF-8 时遵循的范例。有关更多信息,请参阅 bytes.decode。 - bos_token (
str
, optional, defaults to"<s>"
) — 序列开始标记,在预训练期间使用。可以用作序列分类器标记。当使用特殊标记构建序列时,这不是用于序列开始的标记。使用的标记是
cls_token
。 - eos_token (
str
, optional, defaults to"</s>"
) — 序列结束标记。当使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是
sep_token
。 - sep_token (
str
, optional, defaults to"</s>"
) — 分隔符标记,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。 - cls_token (
str
, optional, defaults to"<s>"
) — 分类器标记,用于进行序列分类(对整个序列而不是每个标记进行分类)。当使用特殊标记构建时,它是序列的第一个标记。 - unk_token (
str
, optional, defaults to"<unk>"
) — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。 - pad_token (
str
, optional, defaults to"<pad>"
) — 用于填充的标记,例如在对不同长度的序列进行批处理时。 - mask_token (
str
, optional, defaults to"<mask>"
) — 用于掩码值的标记。这是使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。 - add_prefix_space (
bool
, optional, defaults toTrue
) — 是否在输入中添加初始空格。这允许像对待任何其他单词一样对待前导词。(RoBERTa tokenizer 通过前导空格检测单词的开头)。 - cls_token_box (
List[int]
, optional, defaults to[0, 0, 0, 0]
) — 用于特殊 [CLS] 标记的边界框。 - sep_token_box (
List[int]
, optional, defaults to[0, 0, 0, 0]
) — 用于特殊 [SEP] 标记的边界框。 - pad_token_box (
List[int]
, optional, defaults to[0, 0, 0, 0]
) — 用于特殊 [PAD] 标记的边界框。 - pad_token_label (
int
, optional, defaults to -100) — 用于填充标记的标签。默认为 -100,这是 PyTorch 的 CrossEntropyLoss 的ignore_index
。 - only_label_first_subword (
bool
, optional, defaults toTrue
) — 是否仅标记第一个子词,以防提供单词标签。
构建 LayoutLMv3 tokenizer。基于 RoBERTatokenizer
(字节对编码或 BPE)。LayoutLMv3Tokenizer 可用于将单词、单词级边界框和可选的单词标签转换为标记级的 input_ids
、attention_mask
、token_type_ids
、bbox
和可选的 labels
(用于标记分类)。
此 tokenizer 继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
LayoutLMv3Tokenizer 运行端到端的分词:标点符号分割和 wordpiece。它还将单词级边界框转换为标记级边界框。
__call__
< source >( text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] text_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None boxes: typing.Union[typing.List[typing.List[int]], typing.List[typing.List[typing.List[int]]]] = None word_labels: typing.Union[typing.List[int], typing.List[typing.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) — 词级别整数标签 (用于token分类任务,例如 FUNSD, CORD)。 - add_special_tokens (
bool
, optional, defaults toTrue
) — 是否使用模型相关的特殊 token 对序列进行编码。 - padding (
bool
,str
或 PaddingStrategy, optional, defaults toFalse
) — 激活并控制填充。接受以下值:True
或'longest'
:填充到批次中最长的序列(如果仅提供单个序列,则不填充)。'max_length'
:填充到参数max_length
指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。False
或'do_not_pad'
(默认):不填充(即,可以输出具有不同长度序列的批次)。
- truncation (
bool
,str
或 TruncationStrategy, optional, defaults toFalse
) — 激活并控制截断。接受以下值:True
或'longest_first'
:截断为参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将逐 token 截断,从序列对中最长的序列中删除 token。'only_first'
:截断为参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断序列对中的第一个序列。'only_second'
:截断为参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断序列对中的第二个序列。False
或'do_not_truncate'
(默认):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。
- max_length (
int
, optional) — 控制截断/填充参数之一使用的最大长度。如果未设置或设置为
None
,如果截断/填充参数之一需要最大长度,则将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将停用截断/填充到最大长度。 - stride (
int
, optional, defaults to 0) — 如果与max_length
一起设置为数字,则当return_overflowing_tokens=True
时返回的溢出 token 将包含来自截断序列末尾的一些 token,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠 token 的数量。 - pad_to_multiple_of (
int
, optional) — 如果设置,则将序列填充到提供值的倍数。这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上启用 Tensor Core 的使用尤其有用。 - return_tensors (
str
或 TensorType, optional) — 如果设置,将返回 tensor 而不是 python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- add_special_tokens (
bool
, optional, defaults toTrue
) — 是否使用模型相关的特殊 token 对序列进行编码。 - padding (
bool
,str
或 PaddingStrategy, optional, defaults toFalse
) — 激活并控制填充。接受以下值:True
或'longest'
:填充到批次中最长的序列(如果仅提供单个序列,则不填充)。'max_length'
:填充到参数max_length
指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。False
或'do_not_pad'
(默认):不填充(即,可以输出具有不同长度序列的批次)。
- truncation (
bool
,str
或 TruncationStrategy, optional, defaults toFalse
) — 激活并控制截断。接受以下值:True
或'longest_first'
:截断为参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将逐 token 截断,从序列对中最长的序列中删除 token。'only_first'
:截断为参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断序列对中的第一个序列。'only_second'
:截断为参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断序列对中的第二个序列。False
或'do_not_truncate'
(默认):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。
- max_length (
int
, optional) — 控制截断/填充参数之一使用的最大长度。如果未设置或设置为None
,如果截断/填充参数之一需要最大长度,则将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将停用截断/填充到最大长度。 - stride (
int
, optional, defaults to 0) — 如果与max_length
一起设置为数字,则当return_overflowing_tokens=True
时返回的溢出 token 将包含来自截断序列末尾的一些 token,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠 token 的数量。 - pad_to_multiple_of (
int
, optional) — 如果设置,则将序列填充到提供值的倍数。这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上启用 Tensor Core 的使用尤其有用。 - return_tensors (
str
或 TensorType, optional) — 如果设置,将返回 tensor 而不是 python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
用于token化并为模型准备一个或多个序列或一个或多个序列对,带有词级别归一化边界框和可选标签的主要方法。
LayoutLMv3TokenizerFast
class transformers.LayoutLMv3TokenizerFast
< source >( 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
) — merges 文件的路径。 - errors (
str
, optional, defaults to"replace"
) — 将字节解码为 UTF-8 时要遵循的范例。有关更多信息,请参阅 bytes.decode。 - bos_token (
str
, optional, defaults to"<s>"
) — 序列开始 token,在预训练期间使用。可以用作序列分类器 token。当使用特殊 token 构建序列时,这不是用于序列开头的 token。使用的 token 是
cls_token
。 - eos_token (
str
, optional, defaults to"</s>"
) — 序列结束 token。当使用特殊 token 构建序列时,这不是用于序列结尾的 token。使用的 token 是
sep_token
。 - sep_token (
str
, optional, defaults to"</s>"
) — 分隔符 token,用于从多个序列构建序列时,例如用于序列分类的两个序列,或者用于问答的文本和问题。它也用作使用特殊 token 构建的序列的最后一个 token。 - cls_token (
str
, optional, defaults to"<s>"
) — 分类器 token,用于进行序列分类(对整个序列而不是每个 token 进行分类)。当使用特殊 token 构建时,它是序列的第一个 token。 - unk_token (
str
, optional, defaults to"<unk>"
) — 未知 token。词汇表中没有的 token 无法转换为 ID,而是设置为此 token。 - pad_token (
str
, optional, defaults to"<pad>"
) — 用于填充的 token,例如在批量处理不同长度的序列时。 - mask_token (
str
, optional, defaults to"<mask>"
) — 用于掩码值的 token。这是在使用掩码语言建模训练此模型时使用的 token。这是模型将尝试预测的 token。 - add_prefix_space (
bool
, 可选, 默认为False
) — 是否在输入文本前添加一个空格。 这允许像处理其他单词一样处理首单词。(RoBERTa tokenizer 通过前导空格检测单词的开头)。 - trim_offsets (
bool
, 可选, 默认为True
) — 后处理步骤是否应修剪偏移量以避免包含空格。 - cls_token_box (
List[int]
, 可选, 默认为[0, 0, 0, 0]
) — 用于特殊 [CLS] token 的边界框。 - sep_token_box (
List[int]
, 可选, 默认为[0, 0, 0, 0]
) — 用于特殊 [SEP] token 的边界框。 - pad_token_box (
List[int]
, 可选, 默认为[0, 0, 0, 0]
) — 用于特殊 [PAD] token 的边界框。 - pad_token_label (
int
, 可选, 默认为 -100) — 用于 padding tokens 的标签。 默认为 -100,这是 PyTorch 的 CrossEntropyLoss 的ignore_index
。 - only_label_first_subword (
bool
, 可选, 默认为True
) — 是否仅标记第一个子词,以防提供单词标签。
构建一个 “fast” LayoutLMv3 tokenizer (由 HuggingFace 的 tokenizers 库支持)。 基于 BPE。
此 tokenizer 继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。 用户应参考此超类以获取有关这些方法的更多信息。
__call__
< source >( text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] text_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None boxes: typing.Union[typing.List[typing.List[int]], typing.List[typing.List[typing.List[int]]]] = None word_labels: typing.Union[typing.List[int], typing.List[typing.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]]
, 可选) — 单词级整数标签(用于 token 分类任务,例如 FUNSD,CORD)。 - add_special_tokens (
bool
, 可选, 默认为True
) — 是否使用与其模型相关的特殊 token 对序列进行编码。 - 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
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。 如果提供了一对序列(或一批对),这将逐个 token 截断,从该对中最长的序列中删除 token。'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
时返回的溢出 token 将包含来自截断序列末尾的一些 token,以在截断序列和溢出序列之间提供一些重叠。 此参数的值定义了重叠 token 的数量。 - pad_to_multiple_of (
int
, 可选) — 如果设置,将序列填充到提供值的倍数。 这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上启用 Tensor Cores 的使用特别有用。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回 tensor 而不是 python 整数列表。 可接受的值为:'tf'
: 返回 TensorFlowtf.constant
对象。'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 Numpynp.ndarray
对象。
- add_special_tokens (
bool
, 可选, 默认为True
) — 是否使用与其模型相关的特殊 token 对序列进行编码。 - 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
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。 如果提供了一对序列(或一批对),这将逐个 token 截断,从该对中最长的序列中删除 token。'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
时返回的溢出 token 将包含来自截断序列末尾的一些 token,以在截断序列和溢出序列之间提供一些重叠。 此参数的值定义了重叠 token 的数量。 - pad_to_multiple_of (
int
, 可选) — 如果设置,将序列填充到提供值的倍数。 这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上启用 Tensor Cores 的使用特别有用。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回 tensor 而不是 python 整数列表。 可接受的值为:'tf'
: 返回 TensorFlowtf.constant
对象。'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 Numpynp.ndarray
对象。
用于token化并为模型准备一个或多个序列或一个或多个序列对,带有词级别归一化边界框和可选标签的主要方法。
LayoutLMv3Processor
class transformers.LayoutLMv3Processor
< source >( image_processor = None tokenizer = None **kwargs )
参数
- image_processor (
LayoutLMv3ImageProcessor
, 可选) — LayoutLMv3ImageProcessor 的一个实例。 图像处理器是必需的输入。 - tokenizer (
LayoutLMv3Tokenizer
或LayoutLMv3TokenizerFast
, 可选) — LayoutLMv3Tokenizer 或 LayoutLMv3TokenizerFast 的实例。tokenizer 是必需的输入。
构建一个 LayoutLMv3 processor,它将 LayoutLMv3 图像处理器和 LayoutLMv3 tokenizer 组合成一个单独的 processor。
LayoutLMv3Processor 提供了准备模型数据所需的所有功能。
它首先使用 LayoutLMv3ImageProcessor 来调整大小和标准化文档图像,并可选择应用 OCR 以获取单词和标准化边界框。 这些随后被提供给 LayoutLMv3Tokenizer 或 LayoutLMv3TokenizerFast,它们将单词和边界框转换为 token 级别的 input_ids
、attention_mask
、token_type_ids
、bbox
。 可选地,可以提供整数 word_labels
,它们被转换为 token 级别的 labels
,用于 token 分类任务(例如 FUNSD、CORD)。
__call__
< source >( images text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] = None text_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None boxes: typing.Union[typing.List[typing.List[int]], typing.List[typing.List[typing.List[int]]]] = None word_labels: typing.Union[typing.List[int], typing.List[typing.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 )
此方法首先将 images
参数转发到 call()。 如果使用 apply_ocr
设置为 True
初始化 LayoutLMv3ImageProcessor,它会将获得的单词和边界框以及其他参数传递给 call() 并返回输出,以及调整大小和标准化的 pixel_values
。 如果使用 apply_ocr
设置为 False
初始化 LayoutLMv3ImageProcessor,它会将用户指定的单词 (text
/text_pair
) 和 boxes
以及其他参数传递给 call() 并返回输出,以及调整大小和标准化的 pixel_values
。
有关更多信息,请参阅上述两种方法的文档字符串。
LayoutLMv3Model
class transformers.LayoutLMv3Model
< source >( config )
参数
- config (LayoutLMv3Config) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。
裸 LayoutLMv3 模型 Transformer 输出原始隐藏状态,顶部没有任何特定的 head。 此模型是 PyTorch torch.nn.Module 子类。 将其用作常规 PyTorch Module,并参阅 PyTorch 文档以了解与常规用法和行为相关的所有事项。
forward
< source >( 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 (形状为
(batch_size, token_sequence_length)
的torch.LongTensor
) — 词汇表中输入序列 tokens 的索引。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参阅pixel_values
。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (形状为
(batch_size, token_sequence_length, 4)
的torch.LongTensor
, 可选) — 每个输入序列 token 的边界框。 在范围[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] token。 有关patch_sequence_length
,请参阅pixel_values
。 - pixel_values (形状为
(batch_size, num_channels, height, width)
的torch.FloatTensor
) — 文档图像批次。 每个图像被分成形状为(num_channels, config.patch_size, config.patch_size)
的 patches,并且 patches 的总数 (=patch_sequence_length
) 等于((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (形状为
(batch_size, token_sequence_length)
的torch.FloatTensor
, 可选) — 用于避免在 padding token 索引上执行 attention 的 Mask。 在[0, 1]
中选择的 Mask 值:- 1 表示 未被 Mask 的 tokens,
- 0 表示 已被 Mask 的 tokens。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参阅pixel_values
。 - token_type_ids (形状为
(batch_size, token_sequence_length)
的torch.LongTensor
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。 在[0, 1]
中选择索引:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参阅pixel_values
。 - position_ids (形状为
(batch_size, token_sequence_length)
的torch.LongTensor
, 可选) — 每个输入序列 token 在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参阅pixel_values
。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
, 可选) — 用于 nullify self-attention 模块的选定 heads 的 Mask。 在[0, 1]
中选择的 Mask 值:- 1 表示 head 未被 Mask,
- 0 表示 head 已被 Mask。
- inputs_embeds (形状为
(batch_size, token_sequence_length, hidden_size)
的torch.FloatTensor
, 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部 embedding lookup matrix 更好地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是纯 tuple。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
transformers.modeling_outputs.BaseModelOutput 或 torch.FloatTensor
的 tuple(如果传递 return_dict=False
或当 config.return_dict=False
时),包括各种元素,具体取决于配置 (LayoutLMv3Config) 和输入。
-
last_hidden_state (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 模型最后一层的输出处的 hidden-states 序列。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的 Tuple(如果模型具有 embedding 层,则为 embeddings 的输出 + 每层的输出之一),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的 Hidden-states 加上可选的初始 embedding 输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LayoutLMv3Model forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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
class transformers.LayoutLMv3ForSequenceClassification
< source >( config )
参数
- config (LayoutLMv3Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
LayoutLMv3 模型,顶部带有一个序列分类头([CLS] 标记的最终隐藏状态之上的线性层),例如用于文档图像分类任务,如 RVL-CDIP 数据集。
此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档,了解所有与通用用法和行为相关的事项。
forward
< source >( 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()。
- 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.FloatTensor
,形状为(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 (
torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 掩码,用于避免在 padding 标记索引上执行注意力机制。掩码值在[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.max_position_embeddings - 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 索引转换为关联向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (LayoutLMv3Config) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(或回归,如果 config.num_labels==1)损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类(或回归,如果 config.num_labels==1)分数(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的 Tuple(如果模型具有 embedding 层,则为 embeddings 的输出 + 每层的输出之一),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的 Hidden-states 加上可选的初始 embedding 输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LayoutLMv3ForSequenceClassification 前向方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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
< source >( config )
参数
- config (LayoutLMv3Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
LayoutLMv3 模型,顶部带有一个标记分类头(最终隐藏状态之上的线性层),例如用于序列标记(信息提取)任务,如 FUNSD、SROIE、CORD 和 Kleister-NDA。
此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档,了解所有与通用用法和行为相关的事项。
forward
< source >( 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) 表示右下角的位置。 - pixel_values (
torch.FloatTensor
,形状为(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 (
torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 掩码,用于避免在 padding 标记索引上执行注意力机制。掩码值在[0, 1]
中选择:- 1 表示标记未被掩码,
- 0 表示标记已被掩码。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 用于指示输入的第一部分和第二部分的片段 token 索引。索引从[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于置空自注意力模块中选定 head 的掩码。掩码值从[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精确地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 用于计算 token 分类损失的标签。索引应在[0, ..., config.num_labels - 1]
中。
返回
transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.TokenClassifierOutput 或一个 torch.FloatTensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (LayoutLMv3Config) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, sequence_length, config.num_labels)
) — 分类得分(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的 Tuple(如果模型具有 embedding 层,则为 embeddings 的输出 + 每层的输出之一),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的 Hidden-states 加上可选的初始 embedding 输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LayoutLMv3ForTokenClassification 前向传播方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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
< source >( config )
参数
- config (LayoutLMv3Config) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
LayoutLMv3 模型,顶部带有一个跨度分类 head,用于抽取式问答任务,例如 DocVQA (隐藏状态的文本部分顶部的线性层,用于计算 span start logits
和 span end logits
)。
此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档,了解所有与通用用法和行为相关的事项。
forward
< source >( 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)
) — 词汇表中输入序列 token 的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
torch.LongTensor
,形状为(batch_size, sequence_length, 4)
,可选) — 每个输入序列 token 的边界框。在范围[0, config.max_2d_position_embeddings-1]
中选择。每个边界框应为 (x0, y0, x1, y1) 格式的归一化版本,其中 (x0, y0) 对应于边界框中左上角的位置,而 (x1, y1) 表示右下角的位置。 - pixel_values (
torch.FloatTensor
,形状为(batch_size, num_channels, height, width)
) — 文档图像批次。每个图像被分成形状为(num_channels, config.patch_size, config.patch_size)
的 patch,并且 patch 总数 (=patch_sequence_length
) 等于((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在 padding token 索引上执行注意力的掩码。掩码值从[0, 1]
中选择:- 1 表示 未被掩盖 的 token,
- 0 表示 被掩盖 的 token。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 用于指示输入的第一部分和第二部分的片段 token 索引。索引从[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于置空自注意力模块中选定 head 的掩码。掩码值从[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精确地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 - start_positions (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算 token 分类损失的标签跨度开始位置(索引)。位置被限制在序列的长度 (sequence_length
) 内。序列之外的位置不计入损失计算。 - end_positions (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算 token 分类损失的标签跨度结束位置(索引)。位置被限制在序列的长度 (sequence_length
) 内。序列之外的位置不计入损失计算。
返回
transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.QuestionAnsweringModelOutput 或一个 torch.FloatTensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (LayoutLMv3Config) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 总跨度抽取损失是开始和结束位置的交叉熵损失之和。 -
start_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 跨度开始得分(在 SoftMax 之前)。 -
end_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 跨度结束得分(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的 Tuple(如果模型具有 embedding 层,则为 embeddings 的输出 + 每层的输出之一),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的 Hidden-states 加上可选的初始 embedding 输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LayoutLMv3ForQuestionAnswering 前向传播方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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
class transformers.TFLayoutLMv3Model
< source >( config *inputs **kwargs )
参数
- config (LayoutLMv3Config) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
裸 LayoutLMv3 模型转换器,输出原始隐藏状态,顶部没有任何特定的 head。此模型继承自 TFPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< source >( 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)
) — 词汇表中输入序列 token 的索引。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。有关patch_sequence_length
,请参阅pixel_values
。索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length, 4)
,可选) — 每个输入序列 token 的边界框。在范围[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] token。有关patch_sequence_length
,请参阅pixel_values
。 - pixel_values (
tf.Tensor
,形状为(batch_size, num_channels, height, width)
) — 文档图像批次。每个图像都被分成形状为(num_channels, config.patch_size, config.patch_size)
的 patch,并且 patch 的总数 (=patch_sequence_length
) 等于((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 掩码,用于避免对 padding token 索引执行 attention。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。有关patch_sequence_length
,请参阅pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。有关patch_sequence_length
,请参阅pixel_values
。 - position_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。有关patch_sequence_length
,请参阅pixel_values
。 - head_mask (
tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使 self-attention 模块的选定 head 无效的掩码。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- inputs_embeds (
tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更好地控制如何将 input_ids 索引转换为关联向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有 attention 层的 attention 张量。有关更多详细信息,请参阅返回张量下的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
,形状为(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)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
TFLayoutLMv3Model 前向方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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
class transformers.TFLayoutLMv3ForSequenceClassification
< source >( config: LayoutLMv3Config **kwargs )
参数
- config (LayoutLMv3Config) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
LayoutLMv3 模型,顶部带有一个序列分类头([CLS] 标记的最终隐藏状态之上的线性层),例如用于文档图像分类任务,如 RVL-CDIP 数据集。
此模型继承自 TFPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 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 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)
) — 词汇表中输入序列 tokens 的索引。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length, 4)
,可选) — 每个输入序列 token 的边界框。在范围[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] token。关于patch_sequence_length
,请参阅pixel_values
。 - pixel_values (
tf.Tensor
,形状为(batch_size, num_channels, height, width)
) — 文档图像批次。每张图像被划分为形状为(num_channels, config.patch_size, config.patch_size)
的 patches,patches 的总数 (=patch_sequence_length
) 等于((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在 padding token 索引上执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 已被掩码。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。 - position_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。 - head_mask (
tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于 nullify self-attention 模块中选定 heads 的掩码。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 已被掩码。
- inputs_embeds (
tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有 attention 层的 attention 张量。 有关更多详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回张量下的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
的元组(embeddings 的输出一个,加上每层的输出一个),形状为(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)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
TFLayoutLMv3ForSequenceClassification 前向方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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
class transformers.TFLayoutLMv3ForTokenClassification
< source >( config: LayoutLMv3Config **kwargs )
参数
- config (LayoutLMv3Config) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
LayoutLMv3 模型,顶部带有一个标记分类头(最终隐藏状态之上的线性层),例如用于序列标记(信息提取)任务,如 FUNSD、SROIE、CORD 和 Kleister-NDA。
此模型继承自 TFPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< source >( 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)
) — 词汇表中输入序列 tokens 的索引。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length, 4)
,可选) — 每个输入序列 token 的边界框。在范围[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] token。关于patch_sequence_length
,请参阅pixel_values
。 - pixel_values (
tf.Tensor
,形状为(batch_size, num_channels, height, width)
) — 文档图像批次。每张图像被划分为形状为(num_channels, config.patch_size, config.patch_size)
的 patches,patches 的总数 (=patch_sequence_length
) 等于((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在 padding token 索引上执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 已被掩码。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。 - position_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。关于patch_sequence_length
,请参阅pixel_values
。 - head_mask (
tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于 nullify self-attention 模块中选定 heads 的掩码。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 已被掩码。
- inputs_embeds (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (
tf.Tensor
of shape(batch_size, sequence_length)
, 可选) — 用于计算 token 分类损失的标签。索引应在[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
of shape(n,)
, 可选, 当提供labels
时返回,其中 n 是未屏蔽标签的数量) — 分类损失。 -
logits (
tf.Tensor
of shape(batch_size, sequence_length, config.num_labels)
) — 分类得分(在 SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —tf.Tensor
的元组(embeddings 的输出一个,加上每层的输出一个),形状为(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)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
TFLayoutLMv3ForTokenClassification 前向方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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 >( config: LayoutLMv3Config **kwargs )
参数
- config (LayoutLMv3Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
LayoutLMv3 模型,顶部带有一个跨度分类 head,用于抽取式问答任务,例如 DocVQA (隐藏状态的文本部分顶部的线性层,用于计算 span start logits
和 span end logits
)。
此模型继承自 TFPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 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 (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 token 的索引。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参见pixel_values
。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- bbox (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length, 4)
, 可选) — 每个输入序列 token 的边界框。在范围[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] token。 有关patch_sequence_length
,请参见pixel_values
。 - pixel_values (
tf.Tensor
,形状为(batch_size, num_channels, height, width)
) — 批量的文档图像。每个图像都分为形状为(num_channels, config.patch_size, config.patch_size)
的 patch,并且 patch 的总数 (=patch_sequence_length
) 等于((height / config.patch_size) * (width / config.patch_size))
。 - attention_mask (
tf.Tensor
,形状为(batch_size, sequence_length)
, 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在[0, 1]
中选择:- 1 代表 未被掩码 的 token,
- 0 代表 已被掩码 的 token。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参见pixel_values
。 - token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参见pixel_values
。 - position_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
, 可选) — 位置嵌入中每个输入序列 token 的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。请注意,
sequence_length = token_sequence_length + patch_sequence_length + 1
,其中1
代表 [CLS] token。 有关patch_sequence_length
,请参见pixel_values
。 - head_mask (
tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
, 可选) — 掩码,用于 nullify 自注意力模块的选定 head。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 已被掩码。
- 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 而不是普通元组。 - start_positions (
tf.Tensor
,形状为(batch_size,)
, 可选) — 用于计算 token 分类损失的标签跨度开始位置(索引)。 位置被限制为序列的长度 (sequence_length
)。 序列之外的位置不计入损失计算。 - end_positions (
tf.Tensor
,形状为(batch_size,)
, 可选) — 用于计算 token 分类损失的标签跨度结束位置(索引)。 位置被限制为序列的长度 (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 (
tf.Tensor
,形状为(batch_size, )
, 可选, 当提供start_positions
和end_positions
时返回) — 总跨度提取损失是开始和结束位置的交叉熵之和。 -
start_logits (
tf.Tensor
,形状为(batch_size, sequence_length)
) — 跨度开始得分(在 SoftMax 之前)。 -
end_logits (
tf.Tensor
,形状为(batch_size, sequence_length)
) — 跨度结束得分(在 SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —tf.Tensor
的元组(embeddings 的输出一个,加上每层的输出一个),形状为(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)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
TFLayoutLMv3ForQuestionAnswering 前向方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的 recipe 需要在此函数中定义,但应该在之后调用 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", trust_remote_code=True)
>>> 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