Transformers 文件
ConvNeXT
並獲得增強的文件體驗
開始使用
ConvNeXT
概述
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 的簡潔性和高效性。

該模型由 nielsr 貢獻。TensorFlow 版本的模型由 ariG23498、gante 和 sayakpaul 共同貢獻(貢獻相同)。原始程式碼可以在這裡找到。
資源
一份官方 Hugging Face 和社群(由 🌎 標識)資源列表,幫助你開始使用 ConvNeXT。
- ConvNextForImageClassification 由此示例指令碼和筆記本支援。
- 另請參閱:影像分類任務指南
如果您有興趣在此處提交資源,請隨時開啟 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 (
str
或function
, 可選, 預設為"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
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
orfloat
, 可選, 預設為1/255
) — 如果縮放影像,使用的縮放因子。可以在 `preprocess` 方法中透過 `rescale_factor` 引數覆蓋。 - do_normalize (
bool
, 可選, 預設為True
) — 是否對影像進行歸一化。可以在 `preprocess` 方法中透過 `do_normalize` 引數覆蓋。 - image_mean (
float
orlist[float]
, 可選, 預設為IMAGENET_STANDARD_MEAN
) — 如果對影像進行歸一化,使用的均值。這是一個浮點數或浮點數列表,其長度等於影像中的通道數。可以在 `preprocess` 方法中透過 `image_mean` 引數覆蓋。 - image_std (
float
orlist[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
orlist[float]
, 可選, 預設為self.image_mean
) — 影像均值。 - image_std (
float
orlist[float]
, 可選, 預設為self.image_std
) — 影像標準差。 - return_tensors (
str
或TensorType
, 可選) — 要返回的張量型別。可以是以下之一:- 未設定:返回
np.ndarray
列表。 TensorType.TENSORFLOW
或'tf'
:返回一個tf.Tensor
型別的批次。TensorType.PYTORCH
或'pt'
:返回一個torch.Tensor
型別的批次。TensorType.NUMPY
或'np'
:返回一個np.ndarray
型別的批次。TensorType.JAX
或'jax'
:返回一個jax.numpy.ndarray
型別的批次。
- 未設定:返回
- data_format (
ChannelDimension
或str
, 可選, 預設為ChannelDimension.FIRST
) — 輸出影像的通道維度格式。可以是以下之一:"channels_first"
或ChannelDimension.FIRST
:影像格式為 (num_channels, height, width)。"channels_last"
或ChannelDimension.LAST
:影像格式為 (height, width, num_channels)。- 未設定:使用輸入影像的通道維度格式。
- input_data_format (
ChannelDimension
或str
, 可選) — 輸入影像的通道維度格式。如果未設定,則從輸入影像中推斷通道維度格式。可以是以下之一:"channels_first"
或ChannelDimension.FIRST
:影像格式為 (num_channels, height, width)。"channels_last"
或ChannelDimension.LAST
:影像格式為 (height, width, num_channels)。"none"
或ChannelDimension.NONE
:影像格式為 (height, width)。
預處理一張或一批影像。
ConvNextImageProcessorFast
class transformers.ConvNextImageProcessorFast
< source >( **kwargs: typing_extensions.Unpack[transformers.models.convnext.image_processing_convnext_fast.ConvNextFastImageProcessorKwargs] )
構建一個快速的 Convnext 影像處理器。
預處理
< source >( 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張量。
ConvNextModel
class transformers.ConvNextModel
< source >( config )
引數
- config (ConvNextModel) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
一個基礎的 Convnext 模型,輸出原始的隱藏狀態,頂部沒有任何特定的頭。
該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規的 PyTorch Module 一樣使用它,並參考 PyTorch 文件瞭解所有與通用用法和行為相關的事項。
forward
< source >( pixel_values: typing.Optional[torch.FloatTensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttention
或 tuple(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.BaseModelOutputWithPoolingAndNoAttention
或 tuple(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
< source >( config )
引數
- config (ConvNextForImageClassification) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
帶有影像分類頭的 ConvNext 模型(在池化特徵之上加一個線性層),例如用於 ImageNet。
該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規的 PyTorch Module 一樣使用它,並參考 PyTorch 文件瞭解所有與通用用法和行為相關的事項。
forward
< source >( 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.ImageClassifierOutputWithNoAttention 或 tuple(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.ImageClassifierOutputWithNoAttention 或 tuple(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])
...
TFConvNextModel
class transformers.TFConvNextModel
< source >( 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 函式一樣傳遞輸入!
呼叫
< source >( pixel_values: TFModelInputType | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或 tuple(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.TFBaseModelOutputWithPooling 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一個 tf.Tensor
的元組(如果傳遞了 return_dict=False
或 config.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=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入層的輸出,一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
, optional, 當傳遞output_attentions=True
或config.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.TFSequenceClassifierOutput 或 tuple(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.Tensor
或np.ndarray
,形狀為(batch_size,)
, optional) — 用於計算影像分類/迴歸損失的標籤。索引應在[0, ..., config.num_labels - 1]
範圍內。如果config.num_labels == 1
,則計算迴歸損失(均方損失),如果config.num_labels > 1
,則計算分類損失(交叉熵)。
返回
transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一個 tf.Tensor
的元組(如果傳遞了 return_dict=False
或 config.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=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入層的輸出,一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
, optional, 當傳遞output_attentions=True
或config.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)])