Transformers 文件
ResNet
並獲得增強的文件體驗
開始使用
ResNet
概述
ResNet 模型由 Kaiming He、Xiangyu Zhang、Shaoqing Ren 和 Jian Sun 在論文 Deep Residual Learning for Image Recognition 中提出。我們的實現遵循了 Nvidia 所做的一些小改動,我們將 `stride=2` 應用於 bottleneck 模組的 `3x3` 卷積中,而不是在第一個 `1x1` 卷積中進行下采樣。這通常被稱為“ResNet v1.5”。
ResNet 引入了殘差連線,這使得訓練層數前所未有的網路(多達 1000 層)成為可能。ResNet 贏得了 2015 年 ILSVRC 和 COCO 競賽,是深度計算機視覺領域的一個重要里程碑。
論文摘要如下:
更深的神經網路更難訓練。我們提出了一種殘差學習框架,以簡化比以往使用的網路更深層次的網路的訓練。我們明確地將網路層重構為學習相對於層輸入的殘差函式,而不是學習無參照的函式。我們提供了全面的經驗證據,表明這些殘差網路更容易最佳化,並且可以透過顯著增加深度來提高準確性。在 ImageNet 資料集上,我們評估了深度高達 152 層的殘差網路——比 VGG 網路深 8 倍,但複雜度仍然更低。這些殘差網路的整合在 ImageNet 測試集上實現了 3.57% 的錯誤率。這一結果在 ILSVRC 2015 分類任務中獲得了第一名。我們還分析了在 CIFAR-10 上使用 100 層和 1000 層的網路。表徵的深度對於許多視覺識別任務至關重要。僅憑我們極深的表徵,我們就在 COCO 目標檢測資料集上獲得了 28% 的相對改進。深度殘差網路是我們參加 ILSVRC 和 COCO 2015 競賽的基礎,我們在 ImageNet 檢測、ImageNet 定位、COCO 檢測和 COCO 分割等任務中也獲得了第一名。
下圖展示了 ResNet 的架構。圖片來自原始論文。

該模型由 Francesco 貢獻。該模型的 TensorFlow 版本由 amyeroberts 新增。原始程式碼可以在這裡找到。
資源
一份官方 Hugging Face 和社群(由 🌎 表示)資源列表,幫助您開始使用 ResNet。
- 這個示例指令碼和筆記本支援 ResNetForImageClassification。
- 另請參閱:影像分類任務指南
如果您有興趣在此處提交資源,請隨時開啟 Pull Request,我們將對其進行審查!該資源最好能展示一些新內容,而不是重複現有資源。
ResNetConfig
class transformers.ResNetConfig
< 源 >( num_channels = 3 embedding_size = 64 hidden_sizes = [256, 512, 1024, 2048] depths = [3, 4, 6, 3] layer_type = 'bottleneck' hidden_act = 'relu' downsample_in_first_stage = False downsample_in_bottleneck = False out_features = None out_indices = None **kwargs )
引數
- num_channels (
int
, 可選, 預設為 3) — 輸入通道數。 - embedding_size (
int
, 可選, 預設為 64) — 嵌入層的維度(隱藏層大小)。 - hidden_sizes (
list[int]
, 可選, 預設為[256, 512, 1024, 2048]
) — 每個階段的維度(隱藏層大小)。 - depths (
list[int]
, 可選, 預設為[3, 4, 6, 3]
) — 每個階段的深度(層數)。 - layer_type (
str
, 可選, 預設為"bottleneck"
) — 要使用的層,可以是"basic"
(用於較小的模型,如 resnet-18 或 resnet-34)或"bottleneck"
(用於較大的模型,如 resnet-50 及以上)。 - hidden_act (
str
, 可選, 預設為"relu"
) — 每個塊中的非線性啟用函式。如果是字串,則支援"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - downsample_in_first_stage (
bool
, 可選, 預設為False
) — 如果為True
,第一階段將使用步長為 2 對輸入進行下采樣。 - downsample_in_bottleneck (
bool
, 可選, 預設為False
) — 如果為True
,ResNetBottleNeckLayer 中的第一個 1x1 卷積將使用步長為 2 對輸入進行下采樣。 - 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
屬性中定義的順序相同。
這是用於儲存 ResNetModel 配置的配置類。它用於根據指定的引數例項化一個 ResNet 模型,定義模型架構。使用預設值例項化配置將產生與 ResNet microsoft/resnet-50 架構相似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
示例
>>> from transformers import ResNetConfig, ResNetModel
>>> # Initializing a ResNet resnet-50 style configuration
>>> configuration = ResNetConfig()
>>> # Initializing a model (with random weights) from the resnet-50 style configuration
>>> model = ResNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
ResNetModel
class transformers.ResNetModel
< 源 >( config )
引數
- config (ResNetModel) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法以載入模型權重。
基礎的 Resnet 模型,輸出原始的隱藏狀態,頂部沒有任何特定的頭部。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch 的 torch.nn.Module 子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 源 >( pixel_values: Tensor output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttention
或 tuple(torch.FloatTensor)
引數
- pixel_values (
torch.Tensor
,形狀為(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
時),包含各種元素,具體取決於配置(ResNetConfig)和輸入。
-
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)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
ResNetModel 的前向方法,重寫了 `__call__` 特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。
ResNetForImageClassification
class transformers.ResNetForImageClassification
< 源 >( config )
引數
- config (ResNetForImageClassification) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法以載入模型權重。
ResNet 模型頂部帶有一個影像分類頭(在池化特徵之上加一個線性層),例如用於 ImageNet。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch 的 torch.nn.Module 子類。可以像常規 PyTorch 模組一樣使用它,並參考 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.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
,則計算分類損失(交叉熵)。 - 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
時),包含各種元素,具體取決於配置(ResNetConfig)和輸入。
- 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)
。模型在每個階段輸出的隱藏狀態(也稱為特徵圖)。
ResNetForImageClassification 的前向方法,重寫了 `__call__` 特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, ResNetForImageClassification
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
>>> model = ResNetForImageClassification.from_pretrained("microsoft/resnet-50")
>>> 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])
...
TFResNetModel
class transformers.TFResNetModel
< 源 >( config: ResNetConfig **kwargs )
引數
- config (ResNetConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法以載入模型權重。
基礎的 ResNet 模型,輸出原始特徵,頂部沒有任何特定的頭部。該模型是 TensorFlow 的 keras.layers.Layer 子類。可以像常規 TensorFlow 模組一樣使用它,並參考 TensorFlow 文件瞭解所有與常規用法和行為相關的事項。
呼叫
< 源 >( pixel_values: Tensor output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None training: bool = False ) → transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndNoAttention
或 tuple(tf.Tensor)
引數
- pixel_values (
tf.Tensor
,形狀為(batch_size, num_channels, height, width)
) — 畫素值。畫素值可以使用 AutoImageProcessor 獲得。有關詳細資訊,請參見 ConvNextImageProcessor.__call__()。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 `hidden_states`。 - return_dict (
bool
, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndNoAttention
或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndNoAttention
或一個 tf.Tensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(ResNetConfig)和輸入決定的各種元素。
-
last_hidden_state (形狀為
(batch_size, num_channels, height, width)
的tf.Tensor
) — 模型最後一層輸出的隱藏狀態序列。 -
pooler_output (形狀為
(batch_size, hidden_size)
的tf.Tensor
) — 在空間維度上進行池化操作後最後一層的隱藏狀態。 -
hidden_states (
tuple(tf.Tensor)
, 可選,當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 每個層的輸出各一個),形狀為(batch_size, num_channels, height, width)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
TFResNetModel 的前向方法,重寫了 __call__
特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, TFResNetModel
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
>>> model = TFResNetModel.from_pretrained("microsoft/resnet-50")
>>> inputs = image_processor(image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 2048, 7, 7]
TFResNetForImageClassification
class transformers.TFResNetForImageClassification
< 原始碼 >( config: ResNetConfig **kwargs )
引數
- config (ResNetConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
ResNet 模型頂部帶有一個影像分類頭(在池化特徵之上加一個線性層),例如用於 ImageNet。
此模型是 TensorFlow keras.layers.Layer 的子類。請將其用作常規的 TensorFlow Module,並參考 TensorFlow 文件瞭解所有與常規用法和行為相關的事項。
呼叫
< 原始碼 >( pixel_values: typing.Optional[tensorflow.python.framework.tensor.Tensor] = None labels: typing.Optional[tensorflow.python.framework.tensor.Tensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None training: bool = False ) → transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttention
或 tuple(tf.Tensor)
引數
- pixel_values (
tf.Tensor
,形狀為(batch_size, num_channels, height, width)
) — 畫素值。畫素值可以透過 AutoImageProcessor 獲得。詳情請參閱 ConvNextImageProcessor.call()。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回的張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。 - labels (
tf.Tensor
,形狀為(batch_size,)
,可選) — 用於計算影像分類/迴歸損失的標籤。索引應在[0, ..., config.num_labels - 1]
範圍內。如果config.num_labels > 1
,則計算分類損失(交叉熵)。
返回
transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttention
或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttention
或一個 tf.Tensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(ResNetConfig)和輸入決定的各種元素。
- loss (形狀為
(1,)
的tf.Tensor
,可選,當提供labels
時返回) — 分類(如果 config.num_labels==1,則為迴歸)損失。 - logits (
tf.Tensor
,形狀為(batch_size, config.num_labels)
) — 分類(或迴歸,如果 config.num_labels==1)分數(SoftMax 之前)。 - hidden_states (
tuple(tf.Tensor)
, 可選,當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 每個階段的輸出各一個),形狀為(batch_size, num_channels, height, width)
。模型在每個階段輸出的隱藏狀態(也稱為特徵圖)。
TFResNetForImageClassification 的前向方法,重寫了 __call__
特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, TFResNetForImageClassification
>>> import tensorflow as tf
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image"))
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
>>> model = TFResNetForImageClassification.from_pretrained("microsoft/resnet-50")
>>> inputs = image_processor(image, return_tensors="tf")
>>> logits = model(**inputs).logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = int(tf.math.argmax(logits, axis=-1))
>>> print(model.config.id2label[predicted_label])
tiger cat
FlaxResNetModel
class transformers.FlaxResNetModel
< 原始碼 >( config: ResNetConfig input_shape = (1, 224, 224, 3) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
引數
- config (ResNetConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
- dtype (
jax.numpy.dtype
, 可選, 預設為jax.numpy.float32
) — 計算的資料型別。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上) 和jax.numpy.bfloat16
(在 TPU 上) 之一。這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的
dtype
執行。請注意,這僅指定計算的 dtype,不影響模型引數的 dtype。
一個基礎的 ResNet 模型,輸出原始特徵,頂部沒有任何特定的頭部。
此模型繼承自 FlaxPreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載、儲存和轉換 PyTorch 模型的權重)。
此模型也是 flax.linen.Module 的子類。請將其用作常規的 Flax linen Module,並參考 Flax 文件瞭解所有與常規用法和行為相關的事項。
最後,此模型支援固有的 JAX 功能,例如
__call__
< 原始碼 >( pixel_values params: typing.Optional[dict] = None train: bool = False output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPoolingAndNoAttention
或 tuple(torch.FloatTensor)
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPoolingAndNoAttention
或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPoolingAndNoAttention
或一個 torch.FloatTensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(<class 'transformers.models.resnet.configuration_resnet.ResNetConfig'>
)和輸入決定的各種元素。
- last_hidden_state (
jnp.ndarray
,形狀為(batch_size, num_channels, height, width)
) — 模型最後一層輸出的隱藏狀態序列。 - pooler_output (
jnp.ndarray
,形狀為(batch_size, hidden_size)
) — 最後一層隱藏狀態在空間維度上進行池化操作後的結果。 - hidden_states (
tuple(jnp.ndarray)
, 可選,當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —jnp.ndarray
的元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 每個層的輸出各一個),形狀為(batch_size, num_channels, height, width)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
FlaxResNetPreTrainedModel
的前向方法,重寫了 __call__
特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, FlaxResNetModel
>>> 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("microsoft/resnet-50")
>>> model = FlaxResNetModel.from_pretrained("microsoft/resnet-50")
>>> inputs = image_processor(images=image, return_tensors="np")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
FlaxResNetForImageClassification
class transformers.FlaxResNetForImageClassification
< 原始碼 >( config: ResNetConfig input_shape = (1, 224, 224, 3) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
引數
- config (ResNetConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
- dtype (
jax.numpy.dtype
, 可選, 預設為jax.numpy.float32
) — 計算的資料型別。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上) 和jax.numpy.bfloat16
(在 TPU 上) 之一。這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的
dtype
執行。請注意,這僅指定計算的 dtype,不影響模型引數的 dtype。
ResNet 模型頂部帶有一個影像分類頭(在池化特徵之上加一個線性層),例如用於 ImageNet。
此模型繼承自 FlaxPreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載、儲存和轉換 PyTorch 模型的權重)。
此模型也是 flax.linen.Module 的子類。請將其用作常規的 Flax linen Module,並參考 Flax 文件瞭解所有與常規用法和行為相關的事項。
最後,此模型支援固有的 JAX 功能,例如
__call__
< 原始碼 >( pixel_values params: typing.Optional[dict] = None train: bool = False output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_flax_outputs.FlaxImageClassifierOutputWithNoAttention
或 tuple(torch.FloatTensor)
返回
transformers.modeling_flax_outputs.FlaxImageClassifierOutputWithNoAttention
或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxImageClassifierOutputWithNoAttention
或一個 torch.FloatTensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(<class 'transformers.models.resnet.configuration_resnet.ResNetConfig'>
)和輸入決定的各種元素。
- logits (形狀為
(batch_size, config.num_labels)
的jnp.ndarray
) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。 - hidden_states (
tuple(jnp.ndarray)
, 可選,當傳遞output_hidden_states=True
或當 config.output_hidden_states=True
):jnp.ndarray
的元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 每個階段的輸出各一個),形狀為(batch_size, num_channels, height, width)
。模型在每個階段輸出的隱藏狀態(也稱為特徵圖)。
FlaxResNetPreTrainedModel
的前向方法,重寫了 __call__
特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, FlaxResNetForImageClassification
>>> from PIL import Image
>>> import jax
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
>>> model = FlaxResNetForImageClassification.from_pretrained("microsoft/resnet-50")
>>> inputs = image_processor(images=image, return_tensors="np")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = jax.numpy.argmax(logits, axis=-1)
>>> print("Predicted class:", model.config.id2label[predicted_class_idx.item()])