Transformers documentation

LayoutLMv3

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2022-04-18 在 HF papers 上发布,并于 2022-05-24 贡献给 Hugging Face Transformers。

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 通过使用 patch 嵌入(类似于 ViT)来替代 CNN 骨干网络,从而简化了 LayoutLMv2,并在三个目标上对模型进行预训练:掩码语言建模(MLM)、掩码图像建模(MIM) 以及词-patch 对齐(WPA)。

该论文的摘要如下:

自监督预训练技术在文档人工智能领域取得了显著进展。大多数多模态预训练模型在文本模态上使用掩码语言建模目标来学习双向表示,但在图像模态上的预训练目标各不相同。这种差异增加了多模态表示学习的难度。在本文中,我们提出了 LayoutLMv3,通过统一的文本和图像掩码来预训练用于文档人工智能的多模态 Transformer。此外,LayoutLMv3 还使用词-图块对齐目标进行预训练,通过预测文本词对应的图像图块是否被掩码来学习跨模态对齐。简洁统一的架构和训练目标使 LayoutLMv3 成为适用于以文本为中心和以图像为中心的文档人工智能任务的通用预训练模型。实验结果表明,LayoutLMv3 不仅在以文本为中心的任务(包括表单理解、收据理解和文档视觉问答)中达到了最先进的性能,还在以图像为中心的任务(如文档图像分类和文档布局分析)中表现出色。

drawing LayoutLMv3 architecture. Taken from the original paper.

该模型由 nielsr 贡献。原始代码可在此处找到。

使用技巧

  • 在数据处理方面,LayoutLMv3 与其前身 LayoutLMv2, 完全相同,只是存在以下区别:
    • 图像需要调整大小并进行归一化,且通道需采用常规的 RGB 格式。另一方面,LayoutLMv2 会在内部对图像进行归一化,并期望通道采用 BGR 格式。
    • 文本使用字节对编码(BPE)进行分词,而非 WordPiece。 由于这些数据预处理方面的差异,可以使用 LayoutLMv3Processor,它在内部组合了 LayoutLMv3ImageProcessor(用于图像模态)和 LayoutLMv3Tokenizer/LayoutLMv3TokenizerFast(用于文本模态),为模型准备所有数据。
  • 关于 LayoutLMv3Processor 的使用,请参阅其前代模型的使用指南。

资源

以下是来自 Hugging Face 官方和社区(以 🌎 标识)的资源列表,可帮助您快速上手 LayoutLMv3。如果您希望提交资源以收录于此,请随时发起 Pull Request,我们将进行审核!理想情况下,该资源应展示一些新内容,而非重复现有资源。

LayoutLMv3 与 LayoutLMv2 几乎完全相同,因此我们也提供了可用于 LayoutLMv3 任务的 LayoutLMv2 资源。在使用这些 notebook 时,请注意在准备模型数据时改用 LayoutLMv2Processor!

  • LayoutLMv3 的演示笔记本可在此处找到。
  • 演示脚本可在此处找到。
Text Classification
Token Classification
Question Answering

文档问答

LayoutLMv3Config

class transformers.LayoutLMv3Config

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 50265hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-05pad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_2d_position_embeddings: int = 1024coordinate_size: int = 128shape_size: int = 128has_relative_attention_bias: bool = Truerel_pos_bins: int = 32max_rel_pos: int = 128rel_2d_pos_bins: int = 64max_rel_2d_pos: int = 256has_spatial_attention_bias: bool = Truetext_embed: bool = Truevisual_embed: bool = Trueinput_size: int = 224num_channels: int = 3patch_size: int | list[int] | tuple[int, int] = 16classifier_dropout: float | int | None = None )

参数

  • vocab_size (int, 可选, 默认为 50265) — 模型的词汇表大小。定义了 input_ids 可以表示的不同 token 的数量。
  • hidden_size (int,可选,默认为 768) — 隐藏表示的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int,可选,默认为 12) — Transformer 解码器中每个注意力层的注意力头数量。
  • intermediate_size (int,可选,默认为 3072) — MLP 表示的维度。
  • hidden_act (str,可选,默认为 gelu) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • hidden_dropout_prob (Union[float, int],可选,默认为 0.1) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (Union[float, int],可选,默认为 0.1) — 注意力概率的 dropout 比率。
  • max_position_embeddings (int,可选,默认为 512) — 该模型可能使用的最大序列长度。
  • type_vocab_size (int,可选,默认为 2) — token_type_ids 的词汇表大小。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float,可选,默认为 1e-05) — 层归一化层所使用的 epsilon 值。
  • pad_token_id (int,可选,默认为 1) — 词表中用于填充的 token id。
  • bos_token_id (int,可选,默认为 0) — 词汇表中用于表示流起始的 Token id。
  • eos_token_id (Union[int, list[int]],可选,默认为 2) — 词汇表中用于表示流结束(end-of-stream)的 token id。
  • 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) — 自注意力机制中使用的相对位置分箱数量。
  • max_rel_pos (int,可选,默认为 128) — 自注意力机制中使用的最大相对位置数。
  • rel_2d_pos_bins (int,可选,默认为 64) — 自注意力机制中二维相对位置分箱的数量。
  • max_rel_2d_pos (int,可选,默认为 256) — 自注意力机制中相对 2D 位置的最大数量。
  • has_spatial_attention_bias (bool,可选,默认为 True) — 是否在自注意力机制中使用空间注意力偏置。
  • text_embed (bool,可选,默认为 True) — 是否添加文本嵌入。
  • visual_embed (bool,可选,默认为 True) — 是否添加 patch embeddings。
  • input_size (int,可选,默认为 224) — 图像的分辨率。
  • num_channels (int,可选,默认为 3) — 输入通道的数量。
  • patch_size (Union[int, list[int], tuple[int, int]],可选,默认为 16) — 每个 patch 的大小(分辨率)。
  • classifier_dropout (Union[float, int], 可选) — 分类器的 dropout 比率。

这是用于存储 LayoutLMv3Model 配置的类。它根据指定的参数实例化 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

LayoutLMv3ImageProcessor

class transformers.LayoutLMv3ImageProcessor

< >

( **kwargs: *<class 'transformers.models.layoutlmv3.image_processing_layoutlmv3.LayoutLMv3ImageProcessorKwargs'> )

参数

  • do_convert_rgb (bool,kwargs,可选) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选,默认为 True) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None],kwargs,默认为 {'height' -- 224, 'width': 224}): 描述输入到模型的最大尺寸。
  • default_to_square (bool,kwargs,可选,默认为 True) — 当 size 为 int 时,是否在调整大小时默认使用正方形图像。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 应用 center_crop 后输出图像的尺寸。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs,默认为 2) — 如果调整图像大小,则使用的重采样滤波器。它可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时才会生效。
  • do_rescale (bool,kwargs,可选,默认为 True) — 是否对图像进行重新缩放。
  • rescale_factor (float,kwargs,可选,默认为 0.00392156862745098) — 当 do_rescale 设置为 True 时,用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选,默认为 True) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.5, 0.5, 0.5]) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.5, 0.5, 0.5]) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_pad (bool, kwargs, 可选) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 用于填充图像的 {"height": int, "width" int} 尺寸。必须大于为预处理提供的任何图像尺寸。如果未提供 pad_size,图像将被填充到批次中最大的高度和宽度。仅在 do_pad=True. 时应用。
  • do_center_crop (bool,kwargs,可选) — 是否对图像进行中心裁剪。
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 仅支持 ChannelDimension.FIRST。为兼容旧版处理器而添加。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
    • "channels_first" 或 ChannelDimension.FIRST:图像采用 (num_channels, height, width) 格式。
    • "channels_last" 或 ChannelDimension.LAST:图像采用 (height, width, num_channels) 格式。
    • "none" 或 ChannelDimension.NONE:图像为 (height, width) 格式。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 用于处理视频的设备。如果未设置,则从输入视频中推断设备。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • disable_grouping (bool,kwargs,可选) — 是否禁用按尺寸对图像进行分组,从而逐个处理图像而非批量处理。 如果为 None,则当图像位于 CPU 上时设置为 True,否则设置为 False。此选择基于经验观察,详见此处:https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int,kwargs,可选) — 输入中每张图片所使用的图像 token 数量。 为向后兼容而添加,但在未来的模型中,应将其设置为处理器的属性。
  • apply_ocr (bool, kwargs, 可选,默认为 True) — 是否应用 Tesseract OCR 引擎以获取单词及归一化边界框。可通过 preprocess 方法中的 apply_ocr 参数进行覆盖。
  • ocr_lang (str, kwargs, 可选) — Tesseract OCR 引擎所使用的语言,通过其 ISO 代码指定。默认使用英语。可通过 preprocess 方法中的 ocr_lang 参数进行覆盖。
  • tesseract_config (str, kwargs, 可选) — 调用 Tesseract 时转发给 config 参数的任何额外自定义配置标志。例如:‘—psm 6’。可被 preprocess 方法中的 tesseract_config 参数覆盖。

构建一个 LayoutLMv3ImageProcessor 图像处理器。

预处理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.layoutlmv3.image_processing_layoutlmv3.LayoutLMv3ImageProcessorKwargs'> ) → ~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_convert_rgb (bool,kwargs,可选) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 描述模型的最大输入维度。
  • default_to_square (bool, kwargs, 可选) — 当 size 为整数时,是否在调整大小时默认使用正方形图像。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 应用 center_crop 后输出图像的尺寸。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 如果调整图像大小,则使用的重采样滤波器。可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时生效。
  • do_rescale (bool,kwargs,可选) — 是否对图像进行重新缩放。
  • rescale_factor (float, kwargs, 可选) — 如果 do_rescale 设置为 True,则用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, 可选) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, 可选) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_pad (bool, kwargs, 可选) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 用于填充图像的 {"height": int, "width" int} 尺寸。必须大于为预处理提供的任何图像尺寸。如果未提供 pad_size,图像将被填充到批次中最大的高度和宽度。仅在 do_pad=True. 时应用。
  • do_center_crop (bool,kwargs,可选) — 是否对图像进行中心裁剪。
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 仅支持 ChannelDimension.FIRST。为兼容旧版处理器而添加。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
    • "channels_first" 或 ChannelDimension.FIRST:图像采用 (num_channels, height, width) 格式。
    • "channels_last" 或 ChannelDimension.LAST:图像采用 (height, width, num_channels) 格式。
    • "none" 或 ChannelDimension.NONE:图像为 (height, width) 格式。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 用于处理视频的设备。如果未设置,则从输入视频中推断设备。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • disable_grouping (bool,kwargs,可选) — 是否禁用按尺寸对图像进行分组,从而逐个处理图像而非批量处理。 如果为 None,则当图像位于 CPU 上时设置为 True,否则设置为 False。此选择基于经验观察,详见此处:https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int,kwargs,可选) — 输入中每张图片所使用的图像 token 数量。 为向后兼容而添加,但在未来的模型中,应将其设置为处理器的属性。
  • apply_ocr (bool, kwargs, 可选,默认为 True) — 是否应用 Tesseract OCR 引擎以获取单词及归一化边界框。可通过 preprocess 方法中的 apply_ocr 参数进行覆盖。
  • ocr_lang (str, kwargs, 可选) — Tesseract OCR 引擎所使用的语言,通过其 ISO 代码指定。默认使用英语。可通过 preprocess 方法中的 ocr_lang 参数进行覆盖。
  • tesseract_config (str, kwargs, 可选) — 调用 Tesseract 时转发给 config 参数的任何额外自定义配置标志。例如:‘—psm 6’。可被 preprocess 方法中的 tesseract_config 参数覆盖。

返回值

~image_processing_base.BatchFeature

  • data (dict) — 由 call 方法返回的列表/数组/张量字典(如 ‘pixel_values’ 等)。
  • tensor_type (Union[None, str, TensorType], 可选) — 您可以在此处指定 tensor_type,以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。

LayoutLMv3ImageProcessorPil

class transformers.LayoutLMv3ImageProcessorPil

< >

( **kwargs: *<class 'transformers.models.layoutlmv3.image_processing_pil_layoutlmv3.LayoutLMv3ImageProcessorKwargs'> )

参数

  • do_convert_rgb (bool,kwargs,可选) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选,默认为 True) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None],kwargs,默认为 {'height' -- 224, 'width': 224}): 描述输入到模型的最大尺寸。
  • default_to_square (bool,kwargs,可选,默认为 True) — 当 size 为 int 时,是否在调整大小时默认使用正方形图像。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 应用 center_crop 后输出图像的尺寸。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs,默认为 2) — 如果调整图像大小,则使用的重采样滤波器。它可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时才会生效。
  • do_rescale (bool,kwargs,可选,默认为 True) — 是否对图像进行重新缩放。
  • rescale_factor (float,kwargs,可选,默认为 0.00392156862745098) — 当 do_rescale 设置为 True 时,用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选,默认为 True) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.5, 0.5, 0.5]) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]],kwargs,可选,默认为 [0.5, 0.5, 0.5]) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_pad (bool, kwargs, 可选) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 用于填充图像的 {"height": int, "width" int} 尺寸。必须大于为预处理提供的任何图像尺寸。如果未提供 pad_size,图像将被填充到批次中最大的高度和宽度。仅在 do_pad=True. 时应用。
  • do_center_crop (bool,kwargs,可选) — 是否对图像进行中心裁剪。
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 仅支持 ChannelDimension.FIRST。为兼容旧版处理器而添加。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
    • "channels_first" 或 ChannelDimension.FIRST:图像采用 (num_channels, height, width) 格式。
    • "channels_last" 或 ChannelDimension.LAST:图像采用 (height, width, num_channels) 格式。
    • "none" 或 ChannelDimension.NONE:图像为 (height, width) 格式。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 用于处理视频的设备。如果未设置,则从输入视频中推断设备。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • disable_grouping (bool,kwargs,可选) — 是否禁用按尺寸对图像进行分组,从而逐个处理图像而非批量处理。 如果为 None,则当图像位于 CPU 上时设置为 True,否则设置为 False。此选择基于经验观察,详见此处:https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int,kwargs,可选) — 输入中每张图片所使用的图像 token 数量。 为向后兼容而添加,但在未来的模型中,应将其设置为处理器的属性。
  • apply_ocr (bool, kwargs, 可选,默认为 True) — 是否应用 Tesseract OCR 引擎以获取单词及归一化边界框。可通过 preprocess 方法中的 apply_ocr 参数进行覆盖。
  • ocr_lang (str, kwargs, 可选) — Tesseract OCR 引擎所使用的语言,通过其 ISO 代码指定。默认使用英语。可通过 preprocess 方法中的 ocr_lang 参数进行覆盖。
  • tesseract_config (str, kwargs, 可选) — 调用 Tesseract 时转发给 config 参数的任何额外自定义配置标志。例如:‘—psm 6’。可被 preprocess 方法中的 tesseract_config 参数覆盖。

构建一个 LayoutLMv3ImageProcessor 图像处理器。

预处理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.layoutlmv3.image_processing_pil_layoutlmv3.LayoutLMv3ImageProcessorKwargs'> ) → ~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_convert_rgb (bool,kwargs,可选) — 是否将图像转换为 RGB。
  • do_resize (bool,kwargs,可选) — 是否调整图像大小。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 描述模型的最大输入维度。
  • default_to_square (bool, kwargs, 可选) — 当 size 为整数时,是否在调整大小时默认使用正方形图像。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 应用 center_crop 后输出图像的尺寸。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 如果调整图像大小,则使用的重采样滤波器。可以是枚举 PILImageResampling 中的一个值。仅当 do_resize 设置为 True 时生效。
  • do_rescale (bool,kwargs,可选) — 是否对图像进行重新缩放。
  • rescale_factor (float, kwargs, 可选) — 如果 do_rescale 设置为 True,则用于对图像进行缩放的缩放因子。
  • do_normalize (bool,kwargs,可选) — 是否对图像进行归一化。
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, 可选) — 用于归一化的图像均值。仅当 do_normalize 设置为 True 时生效。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, 可选) — 用于归一化的图像标准差。仅当 do_normalize 设置为 True 时生效。
  • do_pad (bool, kwargs, 可选) — 是否对图像进行填充。填充操作会将图像填充至批次中的最大尺寸,或填充至每张图像的固定正方形尺寸。具体的填充策略取决于模型。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 用于填充图像的 {"height": int, "width" int} 尺寸。必须大于为预处理提供的任何图像尺寸。如果未提供 pad_size,图像将被填充到批次中最大的高度和宽度。仅在 do_pad=True. 时应用。
  • do_center_crop (bool,kwargs,可选) — 是否对图像进行中心裁剪。
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 仅支持 ChannelDimension.FIRST。为兼容旧版处理器而添加。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 可选) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
    • "channels_first" 或 ChannelDimension.FIRST:图像采用 (num_channels, height, width) 格式。
    • "channels_last" 或 ChannelDimension.LAST:图像采用 (height, width, num_channels) 格式。
    • "none" 或 ChannelDimension.NONE:图像为 (height, width) 格式。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 用于处理视频的设备。如果未设置,则从输入视频中推断设备。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • disable_grouping (bool,kwargs,可选) — 是否禁用按尺寸对图像进行分组,从而逐个处理图像而非批量处理。 如果为 None,则当图像位于 CPU 上时设置为 True,否则设置为 False。此选择基于经验观察,详见此处:https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int,kwargs,可选) — 输入中每张图片所使用的图像 token 数量。 为向后兼容而添加,但在未来的模型中,应将其设置为处理器的属性。
  • apply_ocr (bool, kwargs, 可选,默认为 True) — 是否应用 Tesseract OCR 引擎以获取单词及归一化边界框。可通过 preprocess 方法中的 apply_ocr 参数进行覆盖。
  • ocr_lang (str, kwargs, 可选) — Tesseract OCR 引擎所使用的语言,通过其 ISO 代码指定。默认使用英语。可通过 preprocess 方法中的 ocr_lang 参数进行覆盖。
  • tesseract_config (str, kwargs, 可选) — 调用 Tesseract 时转发给 config 参数的任何额外自定义配置标志。例如:‘—psm 6’。可被 preprocess 方法中的 tesseract_config 参数覆盖。

返回值

~image_processing_base.BatchFeature

  • data (dict) — 由 call 方法返回的列表/数组/张量字典(如 ‘pixel_values’ 等)。
  • tensor_type (Union[None, str, TensorType], 可选) — 您可以在此处指定 tensor_type,以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。

LayoutLMv3Tokenizer

class transformers.LayoutLMv3Tokenizer

< >

( 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 = Truecls_token_box = [0, 0, 0, 0]sep_token_box = [0, 0, 0, 0]pad_token_box = [0, 0, 0, 0]pad_token_label = -100only_label_first_subword = Truevocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = None**kwargs )

参数

  • errors (str,可选,默认为 "replace") — 将字节解码为 UTF-8 时遵循的策略。更多信息请参阅 bytes.decode。
  • bos_token (str,可选,默认为 "<s>") — 预训练期间使用的序列起始标记。可用作序列分类器标记。
  • eos_token (str,可选,默认为 "</s>") — 序列结束标记。
  • sep_token (str,可选,默认为 "</s>") — 分隔符 token,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊 token 构建的序列的最后一个 token。
  • cls_token (str,可选,默认为 "<s>") — 用于序列分类(对整个序列进行分类,而非逐 token 分类)的分类器 token。当使用特殊 token 构建序列时,它是序列的第一个 token。
  • unk_token (str,可选,默认为 "<unk>") — 未知标记。不在词汇表中的标记无法转换为 ID,因此会被设置为该标记。
  • pad_token (str,可选,默认为 "<pad>") — 用于填充的标记,例如在对长度不同的序列进行批处理时。
  • mask_token (str, 可选,默认为 "<mask>") — 用于掩码值的标记。这是在以掩码语言建模方式训练该模型时所使用的标记,也是模型将尝试预测的标记。
  • add_prefix_space (bool,可选,默认为 True) — 是否要在输入前添加一个初始空格。这样可以像处理其他单词一样处理开头的单词。
  • cls_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [CLS] token 的边界框。
  • sep_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [SEP] 标记的边界框。
  • pad_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [PAD] token 的边界框。
  • pad_token_label (int,可选,默认值为 -100) — 用于填充 token 的标签。默认值为 -100,即 PyTorch 中 CrossEntropyLoss 的 ignore_index。
  • only_label_first_subword (bool,可选,默认为 True) — 如果提供了词标签,是否仅对第一个子词进行标注。
  • vocab (str 或 dict[str, int],可选) — 自定义词汇表。如果未提供,在使用 from_pretrained 时,词汇表将从 vocab_file 加载。
  • merges (str 或 list[str],可选) — 自定义 merges 列表。如果未提供,在使用 from_pretrained 时将从 merges_file 加载 merges。

构建一个 LayoutLMv3 分词器(基于 HuggingFace 的 tokenizers 库)。基于字节级 BPE。

该分词器继承自 TokenizersBackend,其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

__call__

< >

( text: str | list[str] | list[list[str]]text_pair: list[str] | list[list[str]] | None = Noneboxes: list[list[int]] | list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: 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 等 token 分类任务)。
  • 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 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。这将逐个 token 进行截断,如果提供了一对序列(或一批序列对),则会从该对中最长的序列中移除一个 token。
    • 'only_first':截断至由参数 max_length 指定的最大长度,或者在未提供该参数时,截断至模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),则仅截断其中的第一个序列。
    • 'only_second':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。仅当提供了一对序列(或一批序列对)时,才会截断其中的第二个序列。
    • False 或 'do_not_truncate'(默认值):不进行截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一所使用的最大长度。如果未设置或设置为 None,则当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(如 XLNet),则禁用截断/填充到最大长度的功能。

    如果未设置或设置为 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_token_type_ids (bool, 可选) — 是否返回 token type ID。如果保持默认值,将根据特定分词器的默认设置返回 token type ID,该设置由 return_outputs 属性定义。

    什么是 token type ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定分词器的默认设置返回注意力掩码,该设置由 return_outputs 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool,可选,默认为 False) — 是否返回溢出的 token 序列。如果提供了输入 id 的序列对(或序列对批次),且 truncation_strategy = longest_first 或 True,则会抛出错误,而不是返回溢出的 token。
  • return_special_tokens_mask (bool,可选,默认为 False) — 是否返回特殊 token 掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否返回 (char_start, char_end) 每个 token 的。

    此功能仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用。如果使用 Python 分词器,此方法将抛出 NotImplementedError。

  • return_length (bool,可选,默认为 False) — 是否返回编码后输入的长度。
  • verbose (bool,可选,默认为 True) — 是否打印更多信息和警告。
  • **kwargs — 传递给 self.tokenize() 方法

用于对一条或多条序列,或一对或多对序列进行分词并准备输入模型的主要方法,这些序列带有词级归一化边界框以及可选的标签。

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

LayoutLMv3TokenizerFast

class transformers.LayoutLMv3Tokenizer

< >

( 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 = Truecls_token_box = [0, 0, 0, 0]sep_token_box = [0, 0, 0, 0]pad_token_box = [0, 0, 0, 0]pad_token_label = -100only_label_first_subword = Truevocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = None**kwargs )

参数

  • errors (str,可选,默认为 "replace") — 将字节解码为 UTF-8 时遵循的策略。更多信息请参阅 bytes.decode。
  • bos_token (str,可选,默认为 "<s>") — 预训练期间使用的序列起始标记。可用作序列分类器标记。
  • eos_token (str,可选,默认为 "</s>") — 序列结束标记。
  • sep_token (str,可选,默认为 "</s>") — 分隔符 token,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊 token 构建的序列的最后一个 token。
  • cls_token (str,可选,默认为 "<s>") — 用于序列分类(对整个序列进行分类,而非逐 token 分类)的分类器 token。当使用特殊 token 构建序列时,它是序列的第一个 token。
  • unk_token (str,可选,默认为 "<unk>") — 未知标记。不在词汇表中的标记无法转换为 ID,因此会被设置为该标记。
  • pad_token (str,可选,默认为 "<pad>") — 用于填充的标记,例如在对长度不同的序列进行批处理时。
  • mask_token (str, 可选,默认为 "<mask>") — 用于掩码值的标记。这是在以掩码语言建模方式训练该模型时所使用的标记,也是模型将尝试预测的标记。
  • add_prefix_space (bool,可选,默认为 True) — 是否要在输入前添加一个初始空格。这样可以像处理其他单词一样处理开头的单词。
  • cls_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [CLS] token 的边界框。
  • sep_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [SEP] 标记的边界框。
  • pad_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [PAD] token 的边界框。
  • pad_token_label (int,可选,默认值为 -100) — 用于填充 token 的标签。默认值为 -100,即 PyTorch 中 CrossEntropyLoss 的 ignore_index。
  • only_label_first_subword (bool,可选,默认为 True) — 如果提供了词标签,是否仅对第一个子词进行标注。
  • vocab (str 或 dict[str, int],可选) — 自定义词汇表。如果未提供,在使用 from_pretrained 时,词汇表将从 vocab_file 加载。
  • merges (str 或 list[str],可选) — 自定义 merges 列表。如果未提供,在使用 from_pretrained 时将从 merges_file 加载 merges。

构建一个 LayoutLMv3 分词器(基于 HuggingFace 的 tokenizers 库)。基于字节级 BPE。

该分词器继承自 TokenizersBackend,其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

batch_encode_plus

< >

( batch_text_or_text_pairs: list[str] | list[tuple[str, str]] | list[list[str]]is_pair: bool | None = Noneboxes: list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs )

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 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。这将逐个 token 进行截断,如果提供了一对序列(或一批序列对),则会从该对中最长的序列中移除一个 token。

  • 'only_first':截断至由参数 max_length 指定的最大长度,或者在未提供该参数时,截断至模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),则仅截断其中的第一个序列。

  • 'only_second':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。仅当提供了一对序列(或一批序列对)时,才会截断其中的第二个序列。

  • False 或 'do_not_truncate'(默认值):不进行截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。 max_length(int,可选): 控制截断/填充参数之一所使用的最大长度。

If left unset or set to None, this will use the predefined model maximum length if a maximum length is required by one of the truncation/padding parameters. If the model has no specific maximum input length (like XLNet) truncation/padding to a maximum length will be deactivated. stride (int, optional, defaults to 0): If set to a number along with max_length, the overflowing tokens returned when return_overflowing_tokens=True will contain some tokens from the end of the truncated sequence returned to provide some overlap between truncated and overflowing sequences. The value of this argument defines the number of overlapping tokens. pad_to_multiple_of (int, optional): If set will pad the sequence to a multiple of the provided value. This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >= 7.5 (Volta).

return_token_type_ids (bool,可选): 是否返回 token type ID。如果保持默认值,则根据特定 tokenizer 的默认设置返回 token type ID,该设置由 return_outputs 属性定义。

什么是 token type IDs? return_attention_mask (bool, 可选): 是否返回 attention mask。如果保持默认值,则根据特定 tokenizer 的默认设置返回 attention mask,该设置由 return_outputs 属性定义。

什么是注意力掩码? return_overflowing_tokens (bool,可选,默认为 False): 是否返回溢出的 token 序列。如果提供了输入 id 的序列对(或序列对批次),且 truncation_strategy = longest_first 或 True,则会抛出错误,而不是返回溢出的 token。 return_special_tokens_mask (bool,可选,默认为 False): 是否返回特殊 token 掩码信息。 return_offsets_mapping (bool,可选,默认为 False): 是否为每个 token 返回 (char_start, char_end)。

此功能仅适用于继承自 PreTrainedTokenizerFast 的快速分词器;如果使用 Python 分词器,此方法将引发 NotImplementedError。 return_length (bool,可选,默认为 False): 是否返回编码后输入的长度。 verbose (bool,可选,默认为 True): 是否打印更多信息和警告。 **kwargs:传递给 self.tokenize() 方法

build_inputs_with_special_tokens

< >

( token_ids_0token_ids_1 = None ) → List[int]

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (List[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

List[int]

包含相应特殊标记的输入 ID列表。

通过拼接并添加特殊标记,从单个序列或序列对构建用于序列分类任务的模型输入。RoBERTa 序列的格式如下:

  • 单条序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>

encode_plus

< >

( text: str | list[str]text_pair: list[str] | None = Noneboxes: list[list[int]] | None = Noneword_labels: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs )

参数

  • text (str, List[str], List[List[str]]) — 要编码的第一个序列。它可以是一个字符串、一个字符串列表或一个字符串列表的列表。
  • text_pair (List[str] 或 List[int],可选) — 要编码的可选第二个序列。它可以是字符串列表(单个示例的单词)或字符串列表的列表(一批示例的单词)。
  • 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 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。这将逐个 token 进行截断,如果提供了一对序列(或一批序列对),则会从该对中最长的序列中移除一个 token。
    • 'only_first':截断至由参数 max_length 指定的最大长度,或者在未提供该参数时,截断至模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),则仅截断其中的第一个序列。
    • 'only_second':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。仅当提供了一对序列(或一批序列对)时,才会截断其中的第二个序列。
    • False 或 'do_not_truncate'(默认值):不进行截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一所使用的最大长度。如果未设置或设置为 None,则当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(如 XLNet),则禁用截断/填充到最大长度的功能。

    如果未设置或设置为 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_token_type_ids (bool, 可选) — 是否返回 token type ID。如果保持默认值,将根据特定分词器的默认设置返回 token type ID,该设置由 return_outputs 属性定义。

    什么是 token type ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定分词器的默认设置返回注意力掩码,该设置由 return_outputs 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool,可选,默认为 False) — 是否返回溢出的 token 序列。如果提供了输入 id 的序列对(或序列对批次),且 truncation_strategy = longest_first 或 True,则会抛出错误,而不是返回溢出的 token。
  • return_special_tokens_mask (bool,可选,默认为 False) — 是否返回特殊 token 掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否返回 (char_start, char_end) 每个 token 的。

    此功能仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用。如果使用 Python 分词器,此方法将抛出 NotImplementedError。

  • return_length (bool,可选,默认为 False) — 是否返回编码后输入的长度。
  • verbose (bool,可选,默认为 True) — 是否打印更多信息和警告。
  • **kwargs — 传递给 self.tokenize() 方法

对单个序列或序列对进行分词,并将其准备为模型输入。 .. warning:: 此方法已弃用,应改用 __call__。

LayoutLMv3Processor

class transformers.LayoutLMv3Processor

< >

( image_processor = Nonetokenizer = None**kwargs )

参数

  • image_processor (LayoutLMv3ImageProcessor) — 图像处理器是必需的输入。
  • tokenizer(LayoutLMv3Tokenizer)— 分词器是必需的输入。

构建一个 LayoutLMv3Processor,它将图像处理器和分词器封装为单一处理器。

LayoutLMv3Processor 提供了 LayoutLMv3ImageProcessor 和 LayoutLMv3Tokenizer 的所有功能。有关更多信息,请参阅 ~LayoutLMv3ImageProcessor 和 ~LayoutLMv3Tokenizer。

__call__

< >

( imagestext: str | list[str] | list[list[str]] = Nonetext_pair: list[str] | list[list[str]] | None = Noneboxes: list[list[int]] | list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → ~tokenization_utils_base.BatchEncoding

参数

  • images (`) -- Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, set do_rescale=False`.
  • text (Union[str, list[str], list[list[str]]],可选) — 要编码的序列或序列批次。每个序列可以是字符串或字符串列表(预分词字符串)。如果传入预分词输入,请设置 is_split_into_words=True,以避免与批量输入产生歧义。
  • text_pair (str, list[str] or list[int], 可选) — 要编码的可选第二个序列。它可以是一个字符串、一个字符串列表(使用 tokenize 方法分词后的字符串)或一个整数列表(使用 convert_tokens_to_ids 方法得到的分词字符串 ID)。
  • boxes (list[list[int]] or list[list[list[int]]], 可选) — 词级边界框。每个边界框应归一化到 0-1000 的尺度上。
  • word_labels (list[int] or list[list[int]],可选) — 词级别的整数标签(用于 FUNSD、CORD 等 token 分类任务)。
  • add_special_tokens (bool,可选,默认为 True) — 在编码序列时是否添加特殊标记。此操作将使用底层的 PretrainedTokenizerBase.build_inputs_with_special_tokens 函数,该函数定义了哪些标记会自动添加到输入 ID 中。如果您希望自动添加 bos 或 eos 标记,此功能非常有用。
  • padding (bool、str 或 PaddingStrategy, ,可选, ,默认为 False) — 启用并控制填充。接受以下值:
    • True 或 'longest':填充至批次中最长的序列(如果仅提供单个序列,则不进行填充)。
    • 'max_length':填充至由参数 max_length 指定的最大长度;若未提供该参数,则填充至模型可接受的最大输入长度。
    • False 或 'do_not_pad'(默认值):不进行填充(即可以输出包含不同长度序列的批次)。
  • truncation (bool、str 或 TruncationStrategy, ,可选) — 启用并控制截断。接受以下值:
    • True 或 'longest_first':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。这将逐个 token 进行截断,如果提供了一对序列(或一批序列对),则会从该对中最长的序列中移除一个 token。
    • 'only_first':截断至由参数 max_length 指定的最大长度,或者在未提供该参数时,截断至模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),则仅截断其中的第一个序列。
    • 'only_second':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。仅当提供了一对序列(或一批序列对)时,才会截断其中的第二个序列。
    • False 或 'do_not_truncate'(默认值):不进行截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一所使用的最大长度。如果未设置或设置为 None,则当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(如 XLNet),则禁用截断/填充到最大长度的功能。

    如果未设置或设置为 None,当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(例如 XLNet),则禁用截断/填充至最大长度的功能。

  • stride (int,可选,默认为 0) — 如果与 max_length 一起设置为某个数值,则当 return_overflowing_tokens=True 时,返回的溢出 token 将包含截断序列末尾的某些 token,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠 token 的数量。
  • pad_to_multiple_of (int, 可选) — 如果设置,则将序列填充为所提供值的倍数。需要启用 padding。 这对于在具有计算能力 >= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。
  • return_token_type_ids (bool, 可选) — 是否返回 token type ID。如果保持默认值,将根据特定分词器的默认设置返回 token type ID,该设置由 return_outputs 属性定义。

    什么是 token type ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定分词器的默认设置返回注意力掩码,该设置由 return_outputs 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool,可选,默认为 False) — 是否返回溢出的 token 序列。如果提供了输入 id 的序列对(或序列对批次),且 truncation_strategy = longest_first 或 True,则会抛出错误,而不是返回溢出的 token。
  • return_special_tokens_mask (bool,可选,默认为 False) — 是否返回特殊 token 掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否返回 (char_start, char_end) 每个 token 的。

    此功能仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用。如果使用 Python 分词器,此方法将抛出 NotImplementedError。

  • return_length (bool,可选,默认为 False) — 是否返回编码后输入的长度。
  • verbose (bool,可选,默认为 True) — 是否打印更多信息和警告。
  • return_tensors (Union[str, ~utils.generic.TensorType], 可选) — 如果设置,将返回特定框架的张量。可接受的值为:
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 NumPy np.ndarray 对象。

返回值

~tokenization_utils_base.BatchEncoding

  • data (dict,可选) — 由 __call__/encode_plus/batch_encode_plus 方法返回的列表/数组/张量字典 (‘input_ids’、‘attention_mask’ 等)。
  • encoding(tokenizers.Encoding 或 Sequence[tokenizers.Encoding],可选)— 如果分词器是快速分词器,并且会输出诸如从词/字符空间到 token 空间的映射等附加信息,则 tokenizers.Encoding 实例或实例列表(用于批次)将保存这些信息。
  • tensor_type (Union[None, str, TensorType], 可选) — 您可以在此处指定 tensor_type,以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。
  • prepend_batch_axis (bool,可选,默认为 False) — 在转换为张量时是否添加批次维度(参见上文中的 tensor_type)。请注意,仅当参数 tensor_type 被设置时,该参数才会生效,否则无效。
  • n_sequences (int,可选) — 每个编码所表示的输入序列数量(None 表示未知,1 表示单个序列,2 表示一对序列)。

LayoutLMv3Model

class transformers.LayoutLMv3Model

< >

( config: LayoutLMv3Config )

参数

  • config (LayoutLMv3Config) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

原始的 Layoutlmv3 模型,输出原始隐藏状态,顶部未添加任何特定头。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonepixel_values: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, token_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()。什么是输入 ID?

    请注意,sequence_length = token_sequence_length + patch_sequence_length + 1,其中 1 对应 [CLS] token。有关 patch_sequence_length,请参阅 pixel_values。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • bbox (torch.LongTensor 形状为 (batch_size, token_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。

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • token_type_ids (torch.LongTensor 形状为 (batch_size, token_sequence_length), 可选) — 用于指示输入中第一和第二部分的片段 token 索引。索引取值范围为 [0, 1]:
    • 0 对应 sentence A 标记,
    • 1 对应于 sentence B 标记。

    请注意,sequence_length = token_sequence_length + patch_sequence_length + 1,其中 1 对应 [CLS] token。有关 patch_sequence_length,请参阅 pixel_values。

    什么是 token type ID?

  • position_ids (torch.LongTensor 形状为 (batch_size, token_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。

    什么是位置 ID?

  • inputs_embeds (torch.Tensor,形状为 (batch_size, token_sequence_length, hidden_size),可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。
  • pixel_values (torch.Tensor,形状为 (batch_size, num_channels, image_size, image_size),可选) — 与输入图像对应的张量。可以使用 LayoutLMv3ImageProcessor 获取像素值。有关详细信息,请参阅 LayoutLMv3ImageProcessor.call()(LayoutLMv3Processor 使用 LayoutLMv3ImageProcessor 来处理图像)。

返回值

BaseModelOutput 或 tuple(torch.Tensor)

一个 BaseModelOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(LayoutLMv3Config)和输入。

LayoutLMv3Model 的 forward 方法会重写 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

>>> 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

class transformers.LayoutLMv3ForSequenceClassification

< >

( config: LayoutLMv3Config )

参数

  • config (LayoutLMv3Config) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

在顶部带有序列分类头的 LayoutLMv3 模型(在 [CLS] token 的最终隐藏状态之上添加一个线性层),例如用于文档图像分类任务,如 RVL-CDIP 数据集。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • token_type_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 用于指示输入中第一和第二部分的片段 token 索引。索引取值范围为 [0, 1]:
    • 0 对应 sentence A 标记,
    • 1 对应于 sentence B 标记。

    什么是 token type ID?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 [0, config.n_positions - 1].

    什么是位置 ID?

  • inputs_embeds(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor,可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。
  • labels (torch.LongTensor,形状为 (batch_size,),可选) — 用于计算序列分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵)。
  • 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.LongTensor,形状为 (batch_size, num_channels, image_size, image_size),可选) — 与输入图像对应的张量。可以使用 LayoutLMv3ImageProcessor 获取像素值。有关详细信息,请参阅 LayoutLMv3ImageProcessor.call()(LayoutLMv3Processor 使用 LayoutLMv3ImageProcessor 来处理图像)。

返回值

SequenceClassifierOutput 或 tuple(torch.Tensor)

一个 SequenceClassifierOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(LayoutLMv3Config)和输入。

LayoutLMv3ForSequenceClassification 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。

  • logits(形状为 (batch_size, config.num_labels) 的 torch.Tensor)— 分类(或当 config.num_labels==1 时为回归)得分(SoftMax 之前)。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

>>> 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: LayoutLMv3Config )

参数

  • config (LayoutLMv3Config) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

在顶部添加一个用于序列标注(信息抽取)任务的 token 分类头(即在最终隐藏状态之上添加一个线性层),例如用于 FUNSD、SROIE、CORD 和 Kleister-NDA 等任务。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • bbox (torch.LongTensor,形状为 (batch_size, sequence_length, 4),可选) — 每个输入序列中各个 token 的边界框。取值范围为 [0, config.max_2d_position_embeddings-1]。每个边界框应为 (x0, y0, x1, y1) 格式的归一化版本,其中 (x0, y0) 对应边界框左上角的位置,(x1, y1) 对应右下角的位置。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • token_type_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 用于指示输入中第一和第二部分的片段 token 索引。索引取值范围为 [0, 1]:
    • 0 对应 sentence A 标记,
    • 1 对应于 sentence B 标记。

    什么是 token type ID?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 [0, config.n_positions - 1].

    什么是位置 ID?

  • inputs_embeds(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor,可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。
  • labels(形状为 (batch_size, sequence_length) 的 torch.LongTensor,可选) — 用于计算 token 分类损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。
  • pixel_values (torch.LongTensor,形状为 (batch_size, num_channels, image_size, image_size),可选) — 与输入图像对应的张量。可以使用 LayoutLMv3ImageProcessor 获取像素值。有关详细信息,请参阅 LayoutLMv3ImageProcessor.call()(LayoutLMv3Processor 使用 LayoutLMv3ImageProcessor 来处理图像)。

返回值

TokenClassifierOutput 或 tuple(torch.Tensor)

一个 TokenClassifierOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(LayoutLMv3Config)和输入。

LayoutLMv3ForTokenClassification 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss(形状为 (1,) 的 torch.Tensor,可选,在提供 labels 时返回) — 分类损失。

  • logits(形状为 (batch_size, sequence_length, config.num_labels) 的 torch.Tensor)— 分类分数(SoftMax 之前)。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

>>> 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: LayoutLMv3Config )

参数

  • config (LayoutLMv3Config) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

带有用于抽取式问答任务(如 SQuAD)的 span 分类头的 Layoutlmv3 transformer(在 hidden-states 输出之上添加一个线性层,用于计算 span start logits 和 span end logits)。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.LongTensor] = Noneend_positions: typing.Optional[torch.LongTensor] = Nonebbox: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QuestionAnsweringModelOutput or tuple(torch.Tensor)

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • token_type_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 用于指示输入中第一和第二部分的片段 token 索引。索引取值范围为 [0, 1]:
    • 0 对应 sentence A 标记,
    • 1 对应于 sentence B 标记。

    什么是 token type ID?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 [0, config.n_positions - 1].

    什么是位置 ID?

  • inputs_embeds(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor,可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。
  • start_positions (torch.LongTensor,形状为 (batch_size,),可选) — 用于计算 token 分类损失的标注片段起始位置(索引)的标签。 位置会被截断到序列长度(sequence_length)。序列之外的位置在计算损失时不予考虑。
  • end_positions (torch.LongTensor,形状为 (batch_size,),可选) — 用于计算 token 分类损失的标注片段结束位置(索引)的标签。 位置会被截断到序列长度(sequence_length)。序列之外的位置在计算损失时不予考虑。
  • 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.LongTensor,形状为 (batch_size, num_channels, image_size, image_size),可选) — 与输入图像对应的张量。可以使用 LayoutLMv3ImageProcessor 获取像素值。有关详细信息,请参阅 LayoutLMv3ImageProcessor.call()(LayoutLMv3Processor 使用 LayoutLMv3ImageProcessor 来处理图像)。

返回值

QuestionAnsweringModelOutput 或 tuple(torch.Tensor)

一个 QuestionAnsweringModelOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(LayoutLMv3Config)和输入。

LayoutLMv3ForQuestionAnswering 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选,当提供 labels 时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵之和。

  • start_logits(形状为 (batch_size, sequence_length) 的 torch.Tensor)— 跨度起始分数(SoftMax 之前)。

  • end_logits(形状为 (batch_size, sequence_length) 的 torch.Tensor)— 跨度结束分数(SoftMax 之前)。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

>>> 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
Update on GitHub