Transformers 文件

ConvNeXT

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

ConvNeXT

PyTorch TensorFlow

概述

ConvNeXT 模型由 Zhuang Liu、Hanzi Mao、Chao-Yuan Wu、Christoph Feichtenhofer、Trevor Darrell 和 Saining Xie 在論文 21 世紀 20 年代的 ConvNet 中提出。ConvNeXT 是一種純卷積模型 (ConvNet),其設計靈感來源於 Vision Transformer,並聲稱效能優於它們。

論文摘要如下:

視覺識別的“咆哮的 20 年代”始於 Vision Transformer (ViT) 的引入,它迅速取代了 ConvNet,成為最先進的影像分類模型。然而,傳統的 ViT 在應用於目標檢測和語義分割等通用計算機視覺任務時面臨困難。分層式 Transformer(例如 Swin Transformer)重新引入了幾個 ConvNet 先驗知識,使得 Transformer 作為通用的視覺骨幹網路在實踐中變得可行,並在各種視覺任務上展現出卓越的效能。然而,這種混合方法的有效性在很大程度上仍歸功於 Transformer 的內在優越性,而非卷積固有的歸納偏置。在這項工作中,我們重新審視了設計空間,並測試了純 ConvNet 所能達到的極限。我們逐步將一個標準的 ResNet “現代化”為 Vision Transformer 的設計,並在過程中發現了幾個導致效能差異的關鍵元件。這項探索的結果是一個名為 ConvNeXt 的純 ConvNet 模型家族。ConvNeXt 完全由標準的 ConvNet 模組構建,在準確性和可擴充套件性方面與 Transformer 不相上下,在 ImageNet 上達到了 87.8% 的 top-1 準確率,並在 COCO 檢測和 ADE20K 分割任務上優於 Swin Transformer,同時保持了標準 ConvNet 的簡潔性和高效性。

drawing ConvNeXT 架構。圖片來自原始論文

該模型由 nielsr 貢獻。TensorFlow 版本的模型由 ariG23498gantesayakpaul 共同貢獻(貢獻相同)。原始程式碼可以在這裡找到。

資源

一份官方 Hugging Face 和社群(由 🌎 標識)資源列表,幫助你開始使用 ConvNeXT。

影像分類

如果您有興趣在此處提交資源,請隨時開啟 Pull Request,我們將對其進行審查!該資源最好能展示一些新內容,而不是重複現有資源。

ConvNextConfig

class transformers.ConvNextConfig

< >

( num_channels = 3 patch_size = 4 num_stages = 4 hidden_sizes = None depths = None hidden_act = 'gelu' initializer_range = 0.02 layer_norm_eps = 1e-12 layer_scale_init_value = 1e-06 drop_path_rate = 0.0 image_size = 224 out_features = None out_indices = None **kwargs )

引數

  • num_channels (int, 可選, 預設為 3) — 輸入通道數。
  • patch_size (int, 可選, 預設為 4) — 補丁嵌入層中使用的補丁大小。
  • num_stages (int, 可選, 預設為 4) — 模型中的階段數。
  • hidden_sizes (list[int], 可選, 預設為 [96, 192, 384, 768]) — 每個階段的維度(隱藏層大小)。
  • depths (list[int], 可選, 預設為 [3, 3, 9, 3]) — 每個階段的深度(塊數)。
  • hidden_act (strfunction, 可選, 預設為 "gelu") — 每個塊中的非線性啟用函式(函式或字串)。如果為字串,支援 "gelu""relu""selu""gelu_new"
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。
  • layer_norm_eps (float, 可選, 預設為 1e-12) — 層歸一化層使用的 epsilon 值。
  • layer_scale_init_value (float, 可選, 預設為 1e-6) — 層縮放的初始值。
  • drop_path_rate (float, 可選, 預設為 0.0) — 隨機深度的丟棄率。
  • out_features (list[str], 可選) — 如果用作骨幹網路,指定要輸出的特徵列表。可以是 "stem""stage1""stage2" 等(取決於模型有多少個階段)。如果未設定且 out_indices 已設定,則將預設為相應的階段。如果未設定且 out_indices 未設定,則將預設為最後一個階段。必須與 stage_names 屬性中定義的順序相同。
  • out_indices (list[int], 可選) — 如果用作骨幹網路,指定要輸出的特徵的索引列表。可以是 0、1、2 等(取決於模型有多少個階段)。如果未設定且 out_features 已設定,則將預設為相應的階段。如果未設定且 out_features 未設定,則將預設為最後一個階段。必須與 stage_names 屬性中定義的順序相同。

這是一個用於儲存 ConvNextModel 配置的配置類。它根據指定的引數例項化一個 ConvNeXT 模型,定義模型架構。使用預設值例項化一個配置將產生一個與 ConvNeXT facebook/convnext-tiny-224 架構類似的配置。

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

示例

>>> from transformers import ConvNextConfig, ConvNextModel

>>> # Initializing a ConvNext convnext-tiny-224 style configuration
>>> configuration = ConvNextConfig()

>>> # Initializing a model (with random weights) from the convnext-tiny-224 style configuration
>>> model = ConvNextModel(configuration)

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

ConvNextFeatureExtractor

class transformers.ConvNextFeatureExtractor

< >

( *args **kwargs )

ConvNextImageProcessor

class transformers.ConvNextImageProcessor

< >

( do_resize: bool = True size: typing.Optional[dict[str, int]] = None crop_pct: typing.Optional[float] = None resample: Resampling = <Resampling.BILINEAR: 2> 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) — 控制是否將影像的(高度,寬度)尺寸調整為指定的 `size`。可以在 `preprocess` 方法中透過 `do_resize` 引數覆蓋。
  • size (dict[str, int] 可選, 預設為 {"shortest_edge" -- 384}): 應用 `resize` 後的輸出影像解析度。如果 `size["shortest_edge"]` >= 384,影像將被調整為 `(size["shortest_edge"], size["shortest_edge"])`。否則,影像的較短邊將匹配 `int(size["shortest_edge"]/crop_pct)`,然後影像將被裁剪為 `(size["shortest_edge"], size["shortest_edge"])`。僅當 `do_resize` 設定為 `True` 時有效。可以在 `preprocess` 方法中透過 `size` 引數覆蓋。
  • crop_pct (float 可選, 預設為 224 / 256) — 裁剪影像的百分比。僅當 `do_resize` 為 `True` 且 size < 384 時有效。可以在 `preprocess` 方法中透過 `crop_pct` 引數覆蓋。
  • resample (PILImageResampling, 可選, 預設為 Resampling.BILINEAR) — 如果調整影像大小,使用的重取樣過濾器。可以在 `preprocess` 方法中透過 `resample` 引數覆蓋。
  • do_rescale (bool, 可選, 預設為 True) — 是否透過指定的 `rescale_factor` 縮放影像。可以在 `preprocess` 方法中透過 `do_rescale` 引數覆蓋。
  • rescale_factor (int or float, 可選, 預設為 1/255) — 如果縮放影像,使用的縮放因子。可以在 `preprocess` 方法中透過 `rescale_factor` 引數覆蓋。
  • do_normalize (bool, 可選, 預設為 True) — 是否對影像進行歸一化。可以在 `preprocess` 方法中透過 `do_normalize` 引數覆蓋。
  • image_mean (float or list[float], 可選, 預設為 IMAGENET_STANDARD_MEAN) — 如果對影像進行歸一化,使用的均值。這是一個浮點數或浮點數列表,其長度等於影像中的通道數。可以在 `preprocess` 方法中透過 `image_mean` 引數覆蓋。
  • image_std (float or list[float], 可選, 預設為 IMAGENET_STANDARD_STD) — 如果對影像進行歸一化,使用的標準差。這是一個浮點數或浮點數列表,其長度等於影像中的通道數。可以在 `preprocess` 方法中透過 `image_std` 引數覆蓋。

構建一個 ConvNeXT 影像處理器。

預處理

< >

( 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 crop_pct: typing.Optional[float] = None resample: Resampling = None 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: ChannelDimension = <ChannelDimension.FIRST: 'channels_first'> input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None )

引數

  • images (ImageInput) — 要預處理的影像。需要單個或一批畫素值在 0 到 255 之間的影像。如果傳入畫素值在 0 到 1 之間的影像,請設定 `do_rescale=False`。
  • do_resize (bool, 可選, 預設為 self.do_resize) — 是否調整影像大小。
  • size (dict[str, int], 可選, 預設為 self.size) — 應用 `resize` 後的輸出影像大小。如果 `size["shortest_edge"]` >= 384,影像將被調整為 `(size["shortest_edge"], size["shortest_edge"])`。否則,影像的較短邊將匹配 `int(size["shortest_edge"]/ crop_pct)`,然後影像將被裁剪為 `(size["shortest_edge"], size["shortest_edge"])`。僅當 `do_resize` 設定為 `True` 時有效。
  • crop_pct (float, 可選, 預設為 self.crop_pct) — 如果 size < 384,裁剪影像的百分比。
  • resample (int, 可選, 預設為 self.resample) — 如果調整影像大小,使用的重取樣過濾器。可以是 `PILImageResampling` 過濾器之一。僅當 `do_resize` 設定為 `True` 時有效。
  • do_rescale (bool, 可選, 預設為 self.do_rescale) — 是否將影像值縮放到 [0 - 1] 之間。
  • rescale_factor (float, 可選, 預設為 self.rescale_factor) — 如果 `do_rescale` 設定為 `True`,用於縮放影像的縮放因子。
  • do_normalize (bool, 可選, 預設為 self.do_normalize) — 是否對影像進行歸一化。
  • image_mean (float or list[float], 可選, 預設為 self.image_mean) — 影像均值。
  • image_std (float or list[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) — 輸出影像的通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像格式為 (num_channels, height, width)。
    • "channels_last"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)。

預處理一張或一批影像。

ConvNextImageProcessorFast

class transformers.ConvNextImageProcessorFast

< >

( **kwargs: typing_extensions.Unpack[transformers.models.convnext.image_processing_convnext_fast.ConvNextFastImageProcessorKwargs] )

構建一個快速的 Convnext 影像處理器。

預處理

< >

( 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.convnext.image_processing_convnext_fast.ConvNextFastImageProcessorKwargs] ) <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, 可選) — 如果 `size` 是一個整數,在調整大小時是否預設為方形影像。
  • 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
  • crop_pct (float, 可選) — 裁剪影像的百分比。僅當 size < 384 時有效。可在 `preprocess` 方法中透過 `crop_pct` 覆蓋。

返回

<class 'transformers.image_processing_base.BatchFeature'>

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

Pytorch
隱藏 Pytorch 內容

ConvNextModel

class transformers.ConvNextModel

< >

( config )

引數

  • config (ConvNextModel) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

一個基礎的 Convnext 模型,輸出原始的隱藏狀態,頂部沒有任何特定的頭。

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

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規的 PyTorch Module 一樣使用它,並參考 PyTorch 文件瞭解所有與通用用法和行為相關的事項。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(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} 處理影像)。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

一個 transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttention 或一個 torch.FloatTensor 元組(如果傳遞 return_dict=False 或當 config.return_dict=False 時),包含各種元素,具體取決於配置(ConvNextConfig)和輸入。

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

  • pooler_output (torch.FloatTensor, 形狀為 (batch_size, hidden_size)) — 經過空間維度池化操作後的最後一層隱藏狀態。

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

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

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

儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

ConvNextForImageClassification

class transformers.ConvNextForImageClassification

< >

( config )

引數

  • config (ConvNextForImageClassification) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有影像分類頭的 ConvNext 模型(在池化特徵之上加一個線性層),例如用於 ImageNet。

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

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規的 PyTorch Module 一樣使用它,並參考 PyTorch 文件瞭解所有與通用用法和行為相關的事項。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(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} 處理影像)。
  • labels (torch.LongTensor,形狀為 (batch_size,), 可選) — 用於計算影像分類/迴歸損失的標籤。索引應在 [0, ..., config.num_labels - 1] 範圍內。如果 config.num_labels == 1,則計算迴歸損失(均方損失),如果 config.num_labels > 1,則計算分類損失(交叉熵)。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。

返回

transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

一個 transformers.modeling_outputs.ImageClassifierOutputWithNoAttention 或一個 torch.FloatTensor 元組(如果傳遞 return_dict=False 或當 config.return_dict=False 時),包含各種元素,具體取決於配置(ConvNextConfig)和輸入。

  • 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, num_channels, height, width)。模型在每個階段輸出的隱藏狀態(也稱為特徵圖)。

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

儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnext-tiny-224")
>>> model = ConvNextForImageClassification.from_pretrained("facebook/convnext-tiny-224")

>>> 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])
...
TensorFlow
隱藏 TensorFlow 內容

TFConvNextModel

class transformers.TFConvNextModel

< >

( config *inputs add_pooling_layer = True **kwargs )

引數

  • config (ConvNextConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

一個基礎的 ConvNext 模型,輸出原始特徵,頂部沒有任何特定的頭。該模型繼承自 TFPreTrainedModel。請檢視超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與通用用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 PyTorch 模型),或
  • 所有輸入作為第一個位置引數中的列表、元組或字典。

支援第二種格式的原因是,Keras 方法在向模型和層傳遞輸入時更偏好這種格式。由於這種支援,當使用像 model.fit() 這樣的方法時,一切應該“正常工作”——只需以 model.fit() 支援的任何格式傳遞你的輸入和標籤即可!然而,如果你想在 Keras 方法(如 fit()predict())之外使用第二種格式,例如在使用 Keras Functional API 建立自己的層或模型時,有三種可能的方式可以將所有輸入張量收集到第一個位置引數中。

  • 一個只包含 pixel_values 的獨立張量:model(pixel_values)
  • 一個長度可變的列表,其中包含一個或多個輸入張量,按文件字串中給定的順序排列:model([pixel_values, attention_mask])model([pixel_values, attention_mask, token_type_ids])
  • 一個字典,包含一個或多個與文件字串中給定的輸入名稱相關聯的輸入張量:model({"pixel_values": pixel_values, "token_type_ids": token_type_ids})

請注意,當使用子類化建立模型和層時,你無需擔心任何這些問題,因為你可以像呼叫任何其他 Python 函式一樣傳遞輸入!

呼叫

< >

( pixel_values: TFModelInputType | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingtuple(tf.Tensor)

引數

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor]、`dict[str, tf.Tensor]dict[str, np.ndarray],並且每個樣本的形狀必須為 (batch_size, num_channels, height, width)) — 畫素值。畫素值可以使用 AutoImageProcessor 獲取。有關詳細資訊,請參閱 ConvNextImageProcessor.call()
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在 Eager 模式下使用,在圖模式下將使用配置中的值。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的元組。此引數可以在 Eager 模式下使用,在圖模式下,該值將始終設定為 True。

返回

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingtuple(tf.Tensor)

一個 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置(ConvNextConfig)和輸入包含各種元素。

  • last_hidden_state (tf.Tensor of shape (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

  • pooler_output (tf.Tensor,形狀為 (batch_size, hidden_size)) — 序列的第一個標記(分類標記)的最後一層隱藏狀態,經過線性層和 Tanh 啟用函式進一步處理。線性層的權重是在預訓練期間從下一句預測(分類)目標中訓練的。

    此輸出通常不是輸入語義內容的良好摘要,通常最好對整個輸入序列的隱藏狀態進行平均或池化。

  • hidden_states (tuple(tf.Tensor), optional, 當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入層的輸出,一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor), optional, 當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

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

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

儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoImageProcessor, TFConvNextModel
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnext-tiny-224")
>>> model = TFConvNextModel.from_pretrained("facebook/convnext-tiny-224")

>>> inputs = image_processor(images=image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

TFConvNextForImageClassification

class transformers.TFConvNextForImageClassification

< >

( config: ConvNextConfig *inputs **kwargs )

引數

  • config (ConvNextConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有影像分類頭的 ConvNext 模型(在池化特徵之上加一個線性層),例如用於 ImageNet。

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

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與通用用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 PyTorch 模型),或
  • 所有輸入作為第一個位置引數中的列表、元組或字典。

支援第二種格式的原因是,Keras 方法在向模型和層傳遞輸入時更偏好這種格式。由於這種支援,當使用像 model.fit() 這樣的方法時,一切應該“正常工作”——只需以 model.fit() 支援的任何格式傳遞你的輸入和標籤即可!然而,如果你想在 Keras 方法(如 fit()predict())之外使用第二種格式,例如在使用 Keras Functional API 建立自己的層或模型時,有三種可能的方式可以將所有輸入張量收集到第一個位置引數中。

  • 一個只包含 pixel_values 的獨立張量:model(pixel_values)
  • 一個長度可變的列表,其中包含一個或多個輸入張量,按文件字串中給定的順序排列:model([pixel_values, attention_mask])model([pixel_values, attention_mask, token_type_ids])
  • 一個字典,包含一個或多個與文件字串中給定的輸入名稱相關聯的輸入張量:model({"pixel_values": pixel_values, "token_type_ids": token_type_ids})

請注意,當使用子類化建立模型和層時,你無需擔心任何這些問題,因為你可以像呼叫任何其他 Python 函式一樣傳遞輸入!

呼叫

< >

( pixel_values: TFModelInputType | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) transformers.modeling_tf_outputs.TFSequenceClassifierOutputtuple(tf.Tensor)

引數

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor]、`dict[str, tf.Tensor]dict[str, np.ndarray],並且每個樣本的形狀必須為 (batch_size, num_channels, height, width)) — 畫素值。畫素值可以使用 AutoImageProcessor 獲取。有關詳細資訊,請參閱 ConvNextImageProcessor.call()
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在 Eager 模式下使用,在圖模式下將使用配置中的值。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的元組。此引數可以在 Eager 模式下使用,在圖模式下,該值將始終設定為 True。
  • labels (tf.Tensornp.ndarray,形狀為 (batch_size,), optional) — 用於計算影像分類/迴歸損失的標籤。索引應在 [0, ..., config.num_labels - 1] 範圍內。如果 config.num_labels == 1,則計算迴歸損失(均方損失),如果 config.num_labels > 1,則計算分類損失(交叉熵)。

返回

transformers.modeling_tf_outputs.TFSequenceClassifierOutputtuple(tf.Tensor)

一個 transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置(ConvNextConfig)和輸入包含各種元素。

  • 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), optional, 當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入層的輸出,一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor), optional, 當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

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

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

儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoImageProcessor, TFConvNextForImageClassification
>>> import tensorflow as tf
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnext-tiny-224")
>>> model = TFConvNextForImageClassification.from_pretrained("facebook/convnext-tiny-224")

>>> inputs = image_processor(images=image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = tf.math.argmax(logits, axis=-1)[0]
>>> print("Predicted class:", model.config.id2label[int(predicted_class_idx)])
< > 在 GitHub 上更新

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