# FocalNet

## 概要

FocalNetモデルは、Jianwei Yang、Chunyuan Li、Xiyang Dai、Lu Yuan、Jianfeng Gao によって [Focal Modulation Networks](https://huggingface.co/papers/2203.11926) で提案されました。FocalNetは、ビジョンにおけるトークン間の相互作用をモデル化するために、[ViT](vit) や [Swin](swin) などのモデルで使用される自己注意機構を完全に置き換えるフォーカルモジュレーション機構を採用しています。著者らは、FocalNetは、計算コストが同程度の自己注意ベースのモデルよりも、画像分類、物体検出、セグメンテーションのタスクで優れた性能を発揮すると主張しています。

論文の抄録は以下の通りです。

*我々は、ビジョンにおけるトークン間の相互作用をモデル化するために、自己注意（SA）を完全に焦点化モジュレーション機構に置き換える焦点化モジュレーションネットワーク（FocalNets）を提案します。焦点化モジュレーションは3つの要素から構成されます：(i) 短距離から長距離までの視覚的コンテキストをエンコードするための階層的コンテキスト化（スタックされたディプスワイズ畳み込み層で実装）、(ii) クエリトークンの内容に基づいてコンテキストを選択的に集約するためのゲーティング集約、(iii) 集約されたコンテキストをクエリに注入するための要素ごとのモジュレーションまたはアフィン変換。広範な実験により、FocalNetsは、画像分類、物体検出、セグメンテーションのタスクにおいて、同程度の計算コストで最先端のSA対応モデル（例：SwinやFocal Transformers）を上回ることが示されました。具体的には、tinyサイズとbaseサイズのFocalNetsは、ImageNet-1Kでそれぞれ82.3%と83.9%のtop-1精度を達成しました。ImageNet-22Kで224解像度にて事前学習を行った後、224および384の解像度でファインチューニングすると、それぞれ86.5%と87.3%のtop-1精度に達しました。下流タスクに移行した場合、FocalNetsは明確な優位性を示します。Mask R-CNNを用いた物体検出において、1\timesで訓練されたFocalNet baseは、Swinの対応モデルを2.1ポイント上回り、すでに3\timesスケジュールで訓練されたSwin（49.0対48.5）を超えています。UPerNetを用いたセマンティックセグメンテーションにおいて、単一スケールのFocalNet baseはSwinを2.4上回り、マルチスケールのSwin（50.5対49.7）にも勝っています。大規模なFocalNetとMask2formerを使用することで、ADE20Kセマンティックセグメンテーションで58.5 mIoU、COCO Panoptic Segmentationで57.9 PQを達成しました。巨大なFocalNetとDINOを使用することで、COCO minivalとtest-devでそれぞれ64.3と64.4 mAPを達成し、Swinv2-GやBEIT-3のようなはるかに大きな注意ベースモデルの上に新たなSoTAを樹立しました。*

このモデルは [nielsr](https://huggingface.co/nielsr) によって提供されました。元のコードは [こちら](https://github.com/microsoft/FocalNet) で確認できます。

## FocalNetConfig[[transformers.FocalNetConfig]]

#### transformers.FocalNetConfig[[transformers.FocalNetConfig]]

```python
transformers.FocalNetConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, image_size: int | list[int] | tuple[int, int] = 224, patch_size: int | list[int] | tuple[int, int] = 4, num_channels: int = 3, embed_dim: int = 96, use_conv_embed: bool = False, hidden_sizes: list[int] | tuple[int, ...] = (192, 384, 768, 768), depths: list[int] | tuple[int, ...] = (2, 2, 6, 2), focal_levels: list[int] | tuple[int, ...] = (2, 2, 2, 2), focal_windows: list[int] | tuple[int, ...] = (3, 3, 3, 3), hidden_act: str = 'gelu', mlp_ratio: float = 4.0, hidden_dropout_prob: float | int = 0.0, drop_path_rate: float | int = 0.1, use_layerscale: bool = False, layerscale_value: float = 0.0001, use_post_layernorm: bool = False, use_post_layernorm_in_modulation: bool = False, normalize_modulator: bool = False, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, encoder_stride: int = 32, _out_features: list[str] | None = None, _out_indices: list[int] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/configuration_focalnet.py#L25)

**パラメータ:**

image_size (`Union[int, list[int], tuple[int, int]]`、*任意*、デフォルトは`224`) : 各画像のサイズ（解像度）。

patch_size (`Union[int, list[int], tuple[int, int]]`、*任意*、デフォルトは`4`) : 各パッチのサイズ（解像度）。

num_channels (`int`、*任意*、デフォルトは`3`) : 入力チャネル数。

embed_dim (`int`、*任意*、デフォルトは `96`) : 埋め込みおよび隠れ状態の次元数。

use_conv_embed (`bool`、*任意*、デフォルトは`False`) : 畳み込み埋め込みを使用するかどうか。著者らは、畳み込み埋め込みの使用は通常パフォーマンスを向上させると述べていますが、デフォルトでは使用されていません。

hidden_sizes (`Union[list[int], tuple[int, ...]]`、*任意*、デフォルトは`(192, 384, 768, 768)`) : モデルの各ステージにおける次元数（hidden size）。

depths (`Union[list[int], tuple[int, ...]]`、*任意*、デフォルトは`(2, 2, 6, 2)`) : Transformer の各層の深さ。

focal_levels (`list(int)`、*任意*、デフォルトは `[2, 2, 2, 2]`) : エンコーダーの各ステージにおける、各層の焦点レベル数を指定します。

focal_windows (`list(int)`、*optional*、デフォルトは`[3, 3, 3, 3]`) : エンコーダーの各ステージの各層における、焦点ウィンドウサイズ。

hidden_act (`str`、*任意*、デフォルトは`gelu`) : デコーダーで使用する非線形活性化関数（関数または文字列）。例えば、`"gelu"`、`"relu"`、`"silu"`など。

mlp_ratio (`float`、*任意*、デフォルトは `4.0`) : MLP の隠れ層次元と埋め込み次元の比率。

hidden_dropout_prob (`float`、*任意*、デフォルト値は 0.0) : embeddings と encoder 内のすべての全結合層における dropout 確率です。

drop_path_rate (`Union[float, int]`、*任意*、デフォルトは`0.1`) : パッチ融合のドロップパス率。

use_layerscale (`bool`、*任意*、デフォルトは`False`) : エンコーダーでレイヤースケールを使用するかどうか。

layerscale_value (`float`、*任意*、デフォルト値は 0.0001) : レイヤースケールの初期値です。

use_post_layernorm (`bool`、*任意*、デフォルトは`False`) : エンコーダーでレイヤーノーマルを後置するかどうか。

use_post_layernorm_in_modulation (`bool`、*任意*、デフォルトは`False`) : モジュレーション層でレイヤーノーマライゼーションを後段に適用するかどうか。

normalize_modulator (`bool`、*任意*、デフォルトは`False`) : モジュレーターを正規化するかどうかを指定します。

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

layer_norm_eps (`float`、*任意*、デフォルトは`1e-05`) : Layer Normalization 層で使用する epsilon。

encoder_stride (`int`、*optional*、デフォルト値は 32) : マスクドイメージモデリングにおいて、デコーダーヘッドで空間解像度を上げるための倍率。

これはFocalNetModelの設定を保存するための設定クラスです。指定された引数に基づいてFocalnetモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[microsoft/focalnet-tiny](https://huggingface.co/microsoft/focalnet-tiny)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> from transformers import FocalNetConfig, FocalNetModel

>>> # Initializing a FocalNet microsoft/focalnet-tiny style configuration
>>> configuration = FocalNetConfig()

>>> # Initializing a model (with random weights) from the microsoft/focalnet-tiny style configuration
>>> model = FocalNetModel(configuration)

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

## FocalNetModel[[transformers.FocalNetModel]]

#### transformers.FocalNetModel[[transformers.FocalNetModel]]

```python
transformers.FocalNetModel(config: FocalNetConfig, add_pooling_layer = True, use_mask_token = False)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L592)

**パラメータ:**

config ([FocalNetConfig](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

add_pooling_layer (`bool`、*任意*、デフォルトは`True`) : プーリング層を追加するかどうか

use_mask_token (`bool`、*任意*、デフォルトは`False`) : マスクドイメージモデリングにマスクトークンを使用するかどうか。

特定のヘッドを付加せず、生のhidden-statesを出力する素のFocalnetモデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.FocalNetModel.forward]]

```python
forward(pixel_values: typing.Optional[torch.FloatTensor] = None, bool_masked_pos: typing.Optional[torch.BoolTensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L617)

**パラメータ:**

pixel_values (`torch.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`、*任意*) : 入力画像に対応するテンソルです。ピクセル値は [BitImageProcessor](/docs/transformers/main/ja/model_doc/bit#transformers.BitImageProcessor) を使用して取得できます。詳細については [BitImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) を参照してください（`processor_class` は画像の処理に [BitImageProcessor](/docs/transformers/main/ja/model_doc/bit#transformers.BitImageProcessor) を使用します）。

bool_masked_pos (`torch.BoolTensor`、shape `(batch_size, num_patches)`) : ブール型のマスク位置。どのパッチがマスクされているか（1）、されていないか（0）を示します。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** `FocalNetModelOutput` または `tuple(torch.FloatTensor)`

`FocalNetModelOutput`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[FocalNetConfig](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetConfig)）や入力に応じて、さまざまな要素で構成されます。

[FocalNetModel](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`、*optional*) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **pooler_output** (`torch.FloatTensor`、shape `(batch_size, hidden_size)`、*optional*、`add_pooling_layer=True` が渡された場合に返されます) -- 最終層の hidden-state の平均プーリング。
- **hidden_states** (`tuple[torch.FloatTensor]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **reshaped_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（embeddings の出力用 1 つ + 各ステージの出力用 1 つ）、形状は `(batch_size, hidden_size, height, width)`。

  各層の出力におけるモデルのHidden-states、および空間次元を含むように整形された初期embeddingの出力。

例:

```python
```

## FocalNetForMaskedImageModeling[[transformers.FocalNetForMaskedImageModeling]]

#### transformers.FocalNetForMaskedImageModeling[[transformers.FocalNetForMaskedImageModeling]]

```python
transformers.FocalNetForMaskedImageModeling(config: FocalNetConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L675)

**パラメータ:**

config ([FocalNetConfig](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

マスクドイメージモデリング用にデコーダーを上に配置したFocalNetモデル。

これは[SimMIM](https://huggingface.co/papers/2111.09886)と同じ実装に従っています。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.FocalNetForMaskedImageModeling.forward]]

```python
forward(pixel_values: typing.Optional[torch.FloatTensor] = None, bool_masked_pos: typing.Optional[torch.BoolTensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L693)

**パラメータ:**

pixel_values (`torch.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`、*任意*) : 入力画像に対応するテンソルです。ピクセル値は [BitImageProcessor](/docs/transformers/main/ja/model_doc/bit#transformers.BitImageProcessor) を使用して取得できます。詳細については [BitImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) を参照してください（`processor_class` は画像の処理に [BitImageProcessor](/docs/transformers/main/ja/model_doc/bit#transformers.BitImageProcessor) を使用します）。

bool_masked_pos (`torch.BoolTensor`、shape `(batch_size, num_patches)`) : ブール型のマスク位置。どのパッチがマスクされているか（1）、されていないか（0）を示します。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** `FocalNetMaskedImageModelingOutput` または `tuple(torch.FloatTensor)`

`FocalNetMaskedImageModelingOutput`、または `torch.FloatTensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）。設定（[FocalNetConfig](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetConfig)）や入力に応じて、さまざまな要素で構成されます。

[FocalNetForMaskedImageModeling](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetForMaskedImageModeling) の forward メソッドは、`__call__` という特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`bool_masked_pos` が指定された場合に返されます) -- マスクドイメージモデリング (MLM) の損失。
- **reconstruction** (`torch.FloatTensor`、形状 `(batch_size, num_channels, height, width)`) -- 再構成されたピクセル値。
- **hidden_states** (`tuple[torch.FloatTensor]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **reshaped_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（embeddings の出力用 1 つ + 各ステージの出力用 1 つ）、形状は `(batch_size, hidden_size, height, width)`。

  各層の出力におけるモデルのHidden-states、および空間次元を含むように整形された初期embeddingの出力。

例:
```python
>>> from transformers import AutoImageProcessor, FocalNetConfig, FocalNetForMaskedImageModeling
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/focalnet-base-simmim-window6-192")
>>> config = FocalNetConfig()
>>> model = FocalNetForMaskedImageModeling(config)

>>> num_patches = (model.config.image_size // model.config.patch_size) ** 2
>>> pixel_values = image_processor(images=image, return_tensors="pt").pixel_values
>>> # create random boolean mask of shape (batch_size, num_patches)
>>> bool_masked_pos = torch.randint(low=0, high=2, size=(1, num_patches)).bool()

>>> outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
>>> loss, reconstructed_pixel_values = outputs.loss, outputs.logits
>>> list(reconstructed_pixel_values.shape)
[1, 3, 192, 192]
```

## FocalNetForImageClassification[[transformers.FocalNetForImageClassification]]

#### transformers.FocalNetForImageClassification[[transformers.FocalNetForImageClassification]]

```python
transformers.FocalNetForImageClassification(config: FocalNetConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L782)

**パラメータ:**

config ([FocalNetConfig](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

FocalNetモデルは、プーリングされた出力の上に線形層を配置した画像分類ヘッドを備えています。例えば、ImageNetでの使用を想定しています。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.FocalNetForImageClassification.forward]]

```python
forward(pixel_values: typing.Optional[torch.FloatTensor] = None, labels: typing.Optional[torch.LongTensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L798)

**パラメータ:**

pixel_values (`torch.FloatTensor`、shape `(batch_size, num_channels, image_size, image_size)`、*任意*) : 入力画像に対応するテンソルです。ピクセル値は [BitImageProcessor](/docs/transformers/main/ja/model_doc/bit#transformers.BitImageProcessor) を使用して取得できます。詳細については [BitImageProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) を参照してください（`processor_class` は画像の処理に [BitImageProcessor](/docs/transformers/main/ja/model_doc/bit#transformers.BitImageProcessor) を使用します）。

labels (`torch.LongTensor`、shape `(batch_size,)`、*任意*) : 画像分類/回帰の損失を計算するためのラベル。インデックスは `[0, ..., config.num_labels - 1]` の範囲である必要があります。`config.num_labels == 1` の場合は回帰損失（Mean-Square loss）が計算され、`config.num_labels > 1` の場合は分類損失（Cross-Entropy）が計算されます。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** `FocalNetImageClassifierOutput` または `tuple(torch.FloatTensor)`

`FocalNetImageClassifierOutput`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[FocalNetConfig](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetConfig)）や入力に応じて、さまざまな要素で構成されます。

[FocalNetForImageClassification](/docs/transformers/main/ja/model_doc/focalnet#transformers.FocalNetForImageClassification)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`labels` が指定された場合に返されます) -- 分類（または config.num_labels==1 の場合は回帰）の損失。
- **logits** (`torch.FloatTensor`、shape `(batch_size, config.num_labels)`) -- SoftMax 適用前の分類（または config.num_labels==1 の場合は回帰）スコア。
- **hidden_states** (`tuple[torch.FloatTensor]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 + 各層の出力用）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **reshaped_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（embeddings の出力用 1 つ + 各ステージの出力用 1 つ）、形状は `(batch_size, hidden_size, height, width)`。

  各層の出力におけるモデルのHidden-states、および空間次元を含むように整形された初期embeddingの出力。

例:

```python
>>> from transformers import AutoImageProcessor, FocalNetForImageClassification
>>> import torch
>>> from datasets import load_dataset

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

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/focalnet-tiny")
>>> model = FocalNetForImageClassification.from_pretrained("microsoft/focalnet-tiny")

>>> 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])
...
```

