Transformers 文件

Donut

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PyTorch

Donut

Donut (文件理解 Transformer) 是一種視覺文件理解模型,它不需要光學字元識別 (OCR) 引擎。與傳統方法先使用 OCR 提取文字再處理不同,Donut 採用端到端的基於 Transformer 的架構直接分析文件影像。這消除了與 OCR 相關的低效率,使其在處理不同語言和格式方面更加準確和適應性更強。

Donut 包含視覺編碼器 (Swin) 和文字解碼器 (BART)。Swin 將文件影像轉換為嵌入,BART 將其處理為有意義的文字序列。

您可以在 Naver Clova Information Extraction 組織下找到所有原始的 Donut 檢查點。

點選右側邊欄中的 Donut 模型,瞭解更多如何將 Donut 應用於不同語言和視覺任務的示例。

以下示例演示瞭如何使用 Donut 透過 PipelineAutoModel 執行文件理解任務。

流水線
自動模型
# pip install datasets
import torch
from transformers import pipeline
from PIL import Image

pipeline = pipeline(
    task="document-question-answering",
    model="naver-clova-ix/donut-base-finetuned-docvqa",
    device=0,
    torch_dtype=torch.float16
)
dataset = load_dataset("hf-internal-testing/example-documents", split="test")
image = dataset[0]["image"]

pipeline(image=image, question="What time is the coffee break?")

量化透過以較低精度表示權重來減少大型模型的記憶體負擔。有關更多可用量化後端,請參閱量化概述。

以下示例使用torchao僅將權重量化為int4。

# pip install datasets torchao
import torch
from datasets import load_dataset
from transformers import TorchAoConfig, AutoProcessor, AutoModelForVision2Seq

quantization_config = TorchAoConfig("int4_weight_only", group_size=128)
processor = AutoProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-docvqa")
model = AutoModelForVision2Seq.from_pretrained("naver-clova-ix/donut-base-finetuned-docvqa", quantization_config=quantization_config)

dataset = load_dataset("hf-internal-testing/example-documents", split="test")
image = dataset[0]["image"]
question = "What time is the coffee break?"
task_prompt = f"<s_docvqa><s_question>{question}</s_question><s_answer>"
inputs = processor(image, task_prompt, return_tensors="pt")

outputs = model.generate(
    input_ids=inputs.input_ids,
    pixel_values=inputs.pixel_values,
    max_length=512
)
answer = processor.decode(outputs[0], skip_special_tokens=True)
print(answer)

注意事項

  • 如下所示,使用 Donut 進行文件影像分類。

    >>> import re
    >>> from transformers import DonutProcessor, VisionEncoderDecoderModel
    >>> from datasets import load_dataset
    >>> import torch
    
    >>> processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-rvlcdip")
    >>> model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-rvlcdip")
    
    >>> device = "cuda" if torch.cuda.is_available() else "cpu"
    >>> model.to(device)  # doctest: +IGNORE_RESULT
    
    >>> # load document image
    >>> dataset = load_dataset("hf-internal-testing/example-documents", split="test")
    >>> image = dataset[1]["image"]
    
    >>> # prepare decoder inputs
    >>> task_prompt = "<s_rvlcdip>"
    >>> decoder_input_ids = processor.tokenizer(task_prompt, add_special_tokens=False, return_tensors="pt").input_ids
    
    >>> pixel_values = processor(image, return_tensors="pt").pixel_values
    
    >>> outputs = model.generate(
    ...     pixel_values.to(device),
    ...     decoder_input_ids=decoder_input_ids.to(device),
    ...     max_length=model.decoder.config.max_position_embeddings,
    ...     pad_token_id=processor.tokenizer.pad_token_id,
    ...     eos_token_id=processor.tokenizer.eos_token_id,
    ...     use_cache=True,
    ...     bad_words_ids=[[processor.tokenizer.unk_token_id]],
    ...     return_dict_in_generate=True,
    ... )
    
    >>> sequence = processor.batch_decode(outputs.sequences)[0]
    >>> sequence = sequence.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
    >>> sequence = re.sub(r"<.*?>", "", sequence, count=1).strip()  # remove first task start token
    >>> print(processor.token2json(sequence))
    {'class': 'advertisement'}
  • 如下所示,使用 Donut 進行文件解析。

    >>> import re
    >>> from transformers import DonutProcessor, VisionEncoderDecoderModel
    >>> from datasets import load_dataset
    >>> import torch
    
    >>> processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
    >>> model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
    
    >>> device = "cuda" if torch.cuda.is_available() else "cpu"
    >>> model.to(device)  # doctest: +IGNORE_RESULT
    
    >>> # load document image
    >>> dataset = load_dataset("hf-internal-testing/example-documents", split="test")
    >>> image = dataset[2]["image"]
    
    >>> # prepare decoder inputs
    >>> task_prompt = "<s_cord-v2>"
    >>> decoder_input_ids = processor.tokenizer(task_prompt, add_special_tokens=False, return_tensors="pt").input_ids
    
    >>> pixel_values = processor(image, return_tensors="pt").pixel_values
    
    >>> outputs = model.generate(
    ...     pixel_values.to(device),
    ...     decoder_input_ids=decoder_input_ids.to(device),
    ...     max_length=model.decoder.config.max_position_embeddings,
    ...     pad_token_id=processor.tokenizer.pad_token_id,
    ...     eos_token_id=processor.tokenizer.eos_token_id,
    ...     use_cache=True,
    ...     bad_words_ids=[[processor.tokenizer.unk_token_id]],
    ...     return_dict_in_generate=True,
    ... )
    
    >>> sequence = processor.batch_decode(outputs.sequences)[0]
    >>> sequence = sequence.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
    >>> sequence = re.sub(r"<.*?>", "", sequence, count=1).strip()  # remove first task start token
    >>> print(processor.token2json(sequence))
    {'menu': {'nm': 'CINNAMON SUGAR', 'unitprice': '17,000', 'cnt': '1 x', 'price': '17,000'}, 'sub_total': {'subtotal_price': '17,000'}, 'total': 
    {'total_price': '17,000', 'cashprice': '20,000', 'changeprice': '3,000'}}

DonutSwinConfig

class transformers.DonutSwinConfig

< >

( image_size = 224 patch_size = 4 num_channels = 3 embed_dim = 96 depths = [2, 2, 6, 2] num_heads = [3, 6, 12, 24] window_size = 7 mlp_ratio = 4.0 qkv_bias = True hidden_dropout_prob = 0.0 attention_probs_dropout_prob = 0.0 drop_path_rate = 0.1 hidden_act = 'gelu' use_absolute_embeddings = False initializer_range = 0.02 layer_norm_eps = 1e-05 **kwargs )

引數

  • image_size (int, 可選, 預設為 224) — 每張圖片的大小(解析度)。
  • patch_size (int, 可選, 預設為 4) — 每個塊的大小(解析度)。
  • num_channels (int, 可選, 預設為 3) — 輸入通道的數量。
  • embed_dim (int, 可選, 預設為 96) — 塊嵌入的維度。
  • depths (list(int), 可選, 預設為 [2, 2, 6, 2]) — Transformer 編碼器中每層的深度。
  • num_heads (list(int), 可選, 預設為 [3, 6, 12, 24]) — Transformer 編碼器中每層的注意力頭數。
  • window_size (int, 可選, 預設為 7) — 視窗大小。
  • mlp_ratio (float, 可選, 預設為 4.0) — MLP 隱藏維度與嵌入維度的比率。
  • qkv_bias (bool, 可選, 預設為 True) — 是否應在查詢、鍵和值中新增可學習的偏差。
  • hidden_dropout_prob (float, 可選, 預設為 0.0) — 嵌入和編碼器中所有全連線層的 dropout 機率。
  • attention_probs_dropout_prob (float, 可選, 預設為 0.0) — 注意力機率的 dropout 比率。
  • drop_path_rate (float, 可選, 預設為 0.1) — 隨機深度率。
  • hidden_act (strfunction, 可選, 預設為 "gelu") — 編碼器中的非線性啟用函式(函式或字串)。如果是字串,支援 "gelu""relu""selu""gelu_new"
  • use_absolute_embeddings (bool, 可選, 預設為 False) — 是否向塊嵌入新增絕對位置嵌入。
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。
  • layer_norm_eps (float, 可選, 預設為 1e-05) — 層歸一化層使用的 epsilon 值。

這是用於儲存 DonutSwinModel 配置的配置類。它用於根據指定引數例項化 Donut 模型,定義模型架構。使用預設值例項化配置將生成與 Donut naver-clova-ix/donut-base 架構類似的配置。

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

示例

>>> from transformers import DonutSwinConfig, DonutSwinModel

>>> # Initializing a Donut naver-clova-ix/donut-base style configuration
>>> configuration = DonutSwinConfig()

>>> # Randomly initializing a model from the naver-clova-ix/donut-base style configuration
>>> model = DonutSwinModel(configuration)

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

DonutImageProcessor

class transformers.DonutImageProcessor

< >

( do_resize: bool = True size: typing.Optional[dict[str, int]] = None resample: Resampling = <Resampling.BILINEAR: 2> do_thumbnail: bool = True do_align_long_axis: bool = False do_pad: bool = True do_rescale: bool = True rescale_factor: typing.Union[int, float] = 0.00392156862745098 do_normalize: bool = True image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None **kwargs )

引數

  • do_resize (bool, 可選, 預設為 True) — 是否將影像的 (height, width) 維度調整到指定的 size。可在 preprocess 方法中透過 do_resize 覆蓋。
  • size (dict[str, int] 可選, 預設為 {"shortest_edge" -- 224}): 調整大小後的影像大小。影像的最短邊調整為 size[“shortest_edge”],最長邊調整以保持輸入長寬比。可在 preprocess 方法中透過 size 覆蓋。
  • resample (PILImageResampling, 可選, 預設為 Resampling.BILINEAR) — 如果調整影像大小,使用的重取樣過濾器。可在 preprocess 方法中透過 resample 覆蓋。
  • do_thumbnail (bool, 可選, 預設為 True) — 是否使用縮圖方法調整影像大小。
  • do_align_long_axis (bool, 可選, 預設為 False) — 是否透過旋轉 90 度將影像的長軸與 size 的長軸對齊。
  • do_pad (bool, 可選, 預設為 True) — 是否填充影像。如果在 preprocess 中將 random_padding 設定為 True,則每張影像的每個邊都將填充隨機量,最大不超過批次中最大影像的大小。否則,所有影像都將填充到批次中最大影像的大小。
  • do_rescale (bool, 可選, 預設為 True) — 是否按指定的比例 rescale_factor 重新縮放影像。可在 preprocess 方法中透過 do_rescale 覆蓋。
  • rescale_factor (intfloat, 可選, 預設為 1/255) — 如果重新縮放影像,使用的縮放因子。可在 preprocess 方法中透過 rescale_factor 覆蓋。
  • do_normalize (bool, 可選, 預設為 True) — 是否對影像進行歸一化。可在 preprocess 方法中透過 do_normalize 覆蓋。
  • image_mean (floatlist[float], 可選, 預設為 IMAGENET_STANDARD_MEAN) — 如果歸一化影像,使用的均值。這是一個浮點數或浮點數列表,其長度與影像中的通道數相同。可在 preprocess 方法中透過 image_mean 引數覆蓋。
  • image_std (floatlist[float], 可選, 預設為 IMAGENET_STANDARD_STD) — 影像標準差。

構造 Donut 影像處理器。

預處理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] do_resize: typing.Optional[bool] = None size: typing.Optional[dict[str, int]] = None resample: Resampling = None do_thumbnail: typing.Optional[bool] = None do_align_long_axis: typing.Optional[bool] = None do_pad: typing.Optional[bool] = None random_padding: bool = False do_rescale: typing.Optional[bool] = None rescale_factor: typing.Optional[float] = None do_normalize: typing.Optional[bool] = None image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None data_format: typing.Optional[transformers.image_utils.ChannelDimension] = <ChannelDimension.FIRST: 'channels_first'> input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None )

引數

  • images (ImageInput) — 要預處理的影像。期望單個或批次影像,畫素值範圍為 0 到 255。如果傳入的影像畫素值在 0 到 1 之間,請設定 do_rescale=False
  • do_resize (bool, 可選, 預設為 self.do_resize) — 是否調整影像大小。
  • size (dict[str, int], 可選, 預設為 self.size) — 調整大小後的影像尺寸。影像的最短邊將調整為 min(size[“height”], size[“width”]),最長邊將調整以保持輸入長寬比。
  • resample (int, 可選, 預設為 self.resample) — 如果調整影像大小,使用的重取樣濾波器。可以是列舉 PILImageResampling 之一。僅當 do_resize 設定為 True 時有效。
  • do_thumbnail (bool, 可選, 預設為 self.do_thumbnail) — 是否使用縮圖方法調整影像大小。
  • do_align_long_axis (bool, 可選, 預設為 self.do_align_long_axis) — 是否透過旋轉 90 度,將影像的長軸與 size 的長軸對齊。
  • do_pad (bool, 可選, 預設為 self.do_pad) — 是否填充影像。如果 random_padding 設定為 True,則每個影像的每個邊將隨機填充,直到達到批次中最大影像的大小。否則,所有影像將填充到批次中最大影像的大小。
  • random_padding (bool, 可選, 預設為 self.random_padding) — 填充影像時是否使用隨機填充。如果為 True,批次中的每個影像將在每個側隨機填充,直到達到批次中最大影像的大小。
  • do_rescale (bool, 可選, 預設為 self.do_rescale) — 是否重新縮放影像畫素值。
  • rescale_factor (float, 可選, 預設為 self.rescale_factor) — 如果 do_rescale 設定為 True,則用於重新縮放影像的縮放因子。
  • do_normalize (bool, 可選, 預設為 self.do_normalize) — 是否標準化影像。
  • image_mean (floatlist[float], 可選, 預設為 self.image_mean) — 用於標準化的影像均值。
  • image_std (floatlist[float], 可選, 預設為 self.image_std) — 用於標準化的影像標準差。
  • return_tensors (strTensorType, 可選) — 返回張量的型別。可以是以下之一:
    • 未設定: 返回 np.ndarray 列表。
    • TensorType.TENSORFLOW'tf': 返回 tf.Tensor 批次。
    • TensorType.PYTORCH'pt': 返回 torch.Tensor 批次。
    • TensorType.NUMPY'np': 返回 np.ndarray 批次。
    • TensorType.JAX'jax': 返回 jax.numpy.ndarray 批次。
  • data_format (ChannelDimensionstr, 可選, 預設為 ChannelDimension.FIRST) — 輸出影像的通道維度格式。可以是以下之一:
    • ChannelDimension.FIRST: 影像格式為 (num_channels, height, width)。
    • ChannelDimension.LAST: 影像格式為 (height, width, num_channels)。
    • 未設定: 預設為輸入影像的通道維度格式。
  • input_data_format (ChannelDimensionstr, 可選) — 輸入影像的通道維度格式。如果未設定,則從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST: 影像格式為 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST: 影像格式為 (height, width, num_channels)。
    • "none"ChannelDimension.NONE: 影像格式為 (height, width)。

預處理一張或一批影像。

DonutImageProcessorFast

class transformers.DonutImageProcessorFast

< >

( **kwargs: typing_extensions.Unpack[transformers.models.donut.image_processing_donut_fast.DonutFastImageProcessorKwargs] )

構造一個快速的 Donut 影像處理器。

預處理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] **kwargs: typing_extensions.Unpack[transformers.models.donut.image_processing_donut_fast.DonutFastImageProcessorKwargs] ) <class 'transformers.image_processing_base.BatchFeature'>

引數

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]) — 要預處理的影像。期望單個或批次影像,畫素值範圍為 0 到 255。如果傳入的影像畫素值在 0 到 1 之間,請設定 do_rescale=False
  • do_resize (bool, 可選) — 是否調整影像大小。
  • size (dict[str, int], 可選) — 描述模型的最大輸入尺寸。
  • default_to_square (bool, 可選) — 如果尺寸為整數,是否預設調整為方形影像。
  • resample (Union[PILImageResampling, F.InterpolationMode, NoneType]) — 如果調整影像大小,使用的重取樣濾波器。可以是列舉 PILImageResampling 之一。僅當 do_resize 設定為 True 時有效。
  • do_center_crop (bool, 可選) — 是否中心裁剪影像。
  • crop_size (dict[str, int], 可選) — 應用 center_crop 後輸出影像的大小。
  • do_rescale (bool, 可選) — 是否重新縮放影像。
  • rescale_factor (Union[int, float, NoneType]) — 如果 do_rescale 設定為 True,則用於重新縮放影像的縮放因子。
  • do_normalize (bool, 可選) — 是否標準化影像。
  • image_mean (Union[float, list[float], NoneType]) — 用於標準化的影像均值。僅當 do_normalize 設定為 True 時有效。
  • image_std (Union[float, list[float], NoneType]) — 用於標準化的影像標準差。僅當 do_normalize 設定為 True 時有效。
  • do_convert_rgb (bool, 可選) — 是否將影像轉換為 RGB。
  • return_tensors (Union[str, ~utils.generic.TensorType, NoneType]) — 如果設定為 `pt` 則返回堆疊的張量,否則返回張量列表。
  • data_format (~image_utils.ChannelDimension, 可選) — 輸出影像的通道維度格式。僅支援 ChannelDimension.FIRST。為相容慢速處理器而新增。
  • input_data_format (Union[str, ~image_utils.ChannelDimension, NoneType]) — 輸入影像的通道維度格式。如果未設定,則從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST: 影像格式為 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST: 影像格式為 (height, width, num_channels)。
    • "none"ChannelDimension.NONE: 影像格式為 (height, width)。
  • device (torch.device, 可選) — 處理影像的裝置。如果未設定,則從輸入影像推斷裝置。
  • disable_grouping (bool, 可選) — 是否停用影像按大小分組以單獨處理而不是批次處理。如果為 None,則如果影像在 CPU 上,則設定為 True,否則設定為 False。此選擇基於經驗觀察,詳情請參閱:https://github.com/huggingface/transformers/pull/38157
  • do_thumbnail (bool, 可選, 預設為 self.do_thumbnail) — 是否使用縮圖方法調整影像大小。
  • do_align_long_axis (bool, 可選, 預設為 self.do_align_long_axis) — 是否透過旋轉 90 度,將影像的長軸與 size 的長軸對齊。
  • do_pad (bool, 可選, 預設為 self.do_pad) — 是否填充影像。如果 random_padding 設定為 True,則每個影像的每個邊將隨機填充,直到達到批次中最大影像的大小。否則,所有影像將填充到批次中最大影像的大小。

返回

<class 'transformers.image_processing_base.BatchFeature'>

  • data (dict) — 由 call 方法返回的列表/陣列/張量字典(“pixel_values”等)。
  • tensor_type (Union[None, str, TensorType], 可選) — 您可以在此處提供一個`tensor_type`,以便在初始化時將整數列表轉換為PyTorch/TensorFlow/Numpy張量。

DonutFeatureExtractor

class transformers.DonutFeatureExtractor

< >

( *args **kwargs )

__call__

< >

( images **kwargs )

預處理單張或批次影像。

DonutProcessor

class transformers.DonutProcessor

< >

( image_processor = None tokenizer = None **kwargs )

引數

  • image_processor (DonutImageProcessor, 可選) — DonutImageProcessor 的例項。影像處理器是必需輸入。
  • tokenizer ([XLMRobertaTokenizer/XLMRobertaTokenizerFast], 可選) — [XLMRobertaTokenizer/XLMRobertaTokenizerFast] 的例項。分詞器是必需輸入。

構造一個 Donut 處理器,它將 Donut 影像處理器和 XLMRoBERTa 分詞器封裝成一個單一的處理器。

DonutProcessor 提供 DonutImageProcessor 和 [XLMRobertaTokenizer/XLMRobertaTokenizerFast] 的所有功能。有關更多資訊,請參閱 call()decode() 的文件字串。

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] = None text: typing.Union[str, list[str], NoneType] = None audio = None videos = None **kwargs: typing_extensions.Unpack[transformers.models.donut.processing_donut.DonutProcessorKwargs] )

在普通模式下使用時,此方法將其所有引數轉發給 AutoImageProcessor 的 __call__() 並返回其輸出。如果在 as_target_processor() 上下文中使用,此方法將其所有引數轉發給 DonutTokenizer 的 ~DonutTokenizer.__call__。有關更多資訊,請參閱上述兩種方法的文件字串。

from_pretrained

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike] cache_dir: typing.Union[str, os.PathLike, NoneType] = None force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' **kwargs )

引數

  • pretrained_model_name_or_path (stros.PathLike) — 可以是以下之一:

    • 一個字串,huggingface.co 上模型倉庫中預訓練 feature_extractor 的 *模型 ID*。
    • 包含使用 save_pretrained() 方法儲存的特徵提取器檔案的 *目錄* 路徑,例如 ./my_model_directory/
    • 儲存的特徵提取器 JSON *檔案* 的路徑或 URL,例如 ./my_model_directory/preprocessor_config.json
  • **kwargs — 傳遞給 from_pretrained()~tokenization_utils_base.PreTrainedTokenizer.from_pretrained 的額外關鍵字引數。

例項化與預訓練模型關聯的處理器。

此類方法只是呼叫特徵提取器 from_pretrained()、影像處理器 ImageProcessingMixin 和分詞器 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained 方法。有關更多資訊,請參閱上述方法的文件字串。

save_pretrained

< >

( save_directory push_to_hub: bool = False **kwargs )

引數

  • save_directory (stros.PathLike) — 特徵提取器 JSON 檔案和分詞器檔案將儲存的目錄(如果目錄不存在,則會建立)。
  • push_to_hub (bool, 可選, 預設為 False) — 是否在儲存模型後將其推送到 Hugging Face 模型中心。您可以使用 repo_id 指定要推送到的倉庫(預設為您名稱空間中 save_directory 的名稱)。
  • kwargs (dict[str, Any], optional) — 傳遞給 `push_to_hub()` 方法的附加關鍵字引數。

將此處理器的屬性(特徵提取器、分詞器等)儲存在指定目錄中,以便可以使用 `from_pretrained()` 方法重新載入。

此類方法僅呼叫 `save_pretrained()``save_pretrained()`。有關更多資訊,請參閱上述方法的文件字串。

batch_decode

< >

( *args **kwargs )

此方法將其所有引數轉發到 DonutTokenizer 的 `batch_decode()`。有關更多資訊,請參閱此方法的文件字串。

decode

< >

( *args **kwargs )

此方法將其所有引數轉發到 DonutTokenizer 的 `decode()`。有關更多資訊,請參閱此方法的文件字串。

DonutSwinModel

class transformers.DonutSwinModel

< >

( config add_pooling_layer = True use_mask_token = False )

引數

  • config (DonutSwinModel) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 `from_pretrained()` 方法以載入模型權重。
  • add_pooling_layer (bool, optional, 預設為 True) — 是否新增一個池化層
  • use_mask_token (bool, optional, 預設為 False) — 是否將掩碼標記用於掩碼影像建模。

裸 Donut Swin 模型,輸出原始隱藏狀態,頂部沒有任何特定頭部。

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

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

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None bool_masked_pos: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.models.donut.modeling_donut_swin.DonutSwinModelOutputtuple(torch.FloatTensor)

引數

  • pixel_values (torch.FloatTensor,形狀為 (batch_size, num_channels, image_size, image_size)可選) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參見 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 處理影像)。
  • bool_masked_pos (torch.BoolTensor,形狀為 (batch_size, num_patches)) — 布林掩碼位置。指示哪些補丁被掩碼 (1),哪些未被掩碼 (0)。
  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示頭部未被掩碼
    • 0 表示頭部已被掩碼
  • output_attentions (bool, optional) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • interpolate_pos_encoding (bool, 預設為 False) — 是否對預訓練的位置編碼進行插值。
  • return_dict (bool, 可選) — 是否返回 `ModelOutput` 而不是普通元組。

返回

transformers.models.donut.modeling_donut_swin.DonutSwinModelOutputtuple(torch.FloatTensor)

一個 transformers.models.donut.modeling_donut_swin.DonutSwinModelOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置 (`DonutSwinConfig`) 和輸入包含各種元素。

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

  • pooler_output (torch.FloatTensor,形狀為 (batch_size, hidden_size)可選,當傳遞 add_pooling_layer=True 時返回) — 最後一層隱藏狀態的平均池化。

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

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

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

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

  • reshaped_hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 元組(嵌入輸出一個,加上每個階段輸出一個),形狀為 (batch_size, hidden_size, height, width)

    模型在每層輸出處的隱藏狀態,以及重新調整以包含空間維度的初始嵌入輸出。

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

儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 `Module` 例項,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

DonutSwinForImageClassification

class transformers.DonutSwinForImageClassification

< >

( config )

引數

DonutSwin 模型轉換器,頂部帶有一個影像分類頭([CLS] 標記最終隱藏狀態頂部的線性層),例如用於 ImageNet。

請注意,透過在模型的 `forward` 中將 `interpolate_pos_encoding` 設定為 `True`,可以在比其訓練影像更高解析度的影像上微調 DonutSwin。這將把預訓練的位置嵌入插值到更高解析度。

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

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

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.models.donut.modeling_donut_swin.DonutSwinImageClassifierOutputtuple(torch.FloatTensor)

引數

  • pixel_values (torch.FloatTensor,形狀為 (batch_size, num_channels, image_size, image_size)可選) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參見 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 處理影像)。
  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示頭部未被掩碼
    • 0 表示頭部已被掩碼
  • labels (torch.LongTensor,形狀為 (batch_size,)可選) — 用於計算影像分類/迴歸損失的標籤。索引應在 [0, ..., config.num_labels - 1] 之間。如果 config.num_labels == 1,則計算迴歸損失(均方損失);如果 config.num_labels > 1,則計算分類損失(交叉熵)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • interpolate_pos_encoding (bool, 預設為 False) — 是否對預訓練的位置編碼進行插值。
  • return_dict (bool, 可選) — 是否返回 `ModelOutput` 而不是普通元組。

返回

transformers.models.donut.modeling_donut_swin.DonutSwinImageClassifierOutputtuple(torch.FloatTensor)

一個 transformers.models.donut.modeling_donut_swin.DonutSwinImageClassifierOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置 (`DonutSwinConfig`) 和輸入包含各種元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失(如果 config.num_labels==1,則為迴歸損失)。

  • logits (形狀為 (batch_size, config.num_labels)torch.FloatTensor) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。

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

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

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

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

  • reshaped_hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 元組(嵌入輸出一個,加上每個階段輸出一個),形狀為 (batch_size, hidden_size, height, width)

    模型在每層輸出處的隱藏狀態,以及重新調整以包含空間維度的初始嵌入輸出。

此 `transformers.models.donut.modeling_donut_swin.DonutSwinForImageClassification` 的 `forward` 方法,覆蓋了 `__call__` 特殊方法。

儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 `Module` 例項,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

>>> from transformers import AutoImageProcessor, DonutSwinForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("naver-clova-ix/donut-base")
>>> model = DonutSwinForImageClassification.from_pretrained("naver-clova-ix/donut-base")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
< > 在 GitHub 上更新

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