# FocalNet

## Resumen

El modelo FocalNet se propuso en [Focal Modulation Networks](https://huggingface.co/papers/2203.11926) de Jianwei Yang, Chunyuan Li, Xiyang Dai, Lu Yuan y Jianfeng Gao. FocalNets reemplazan por completo la autoatención (utilizada en modelos como [ViT](vit) y [Swin](swin)) mediante un mecanismo de modulación focal para modelar las interacciones entre tokens en visión. Los autores afirman que FocalNets superan a los modelos basados en autoatención con costos computacionales similares en las tareas de clasificación de imágenes, detección de objetos y segmentación.

El resumen del artículo es el siguiente:

*Proponemos redes de modulación focal (FocalNets, en breve), donde la autoatención (SA) se reemplaza por completo por un mecanismo de modulación focal para modelar las interacciones entre tokens en visión. La modulación focal comprende tres componentes: (i) contextualización jerárquica, implementada mediante una pila de capas de convolución depth-wise, para codificar contextos visuales desde rangos cortos hasta largos, (ii) agregación con puerta para recopilar selectivamente contextos para cada token de consulta en función de su contenido, y (iii) modulación elemento a elemento o transformación afín para inyectar el contexto agregado en la consulta. Experimentos extensos muestran que FocalNets superan a los equivalentes de SA del estado del arte (p. ej., Swin y Focal Transformers) con costos computacionales similares en las tareas de clasificación de imágenes, detección de objetos y segmentación. Específicamente, FocalNets de tamaño tiny y base alcanzan una precisión top-1 del 82,3 % y 83,9 % en ImageNet-1K. Después de ser preentrenados en ImageNet-22K con resolución 224, alcanzan una precisión top-1 del 86,5 % y 87,3 % al ser afinados con resolución 224 y 384, respectivamente. Al transferirse a tareas descendentes, FocalNets exhiben una clara superioridad. Para la detección de objetos con Mask R-CNN, FocalNet base entrenado con 1\times supera al equivalente de Swin en 2,1 puntos y ya supera a Swin entrenado con un programa de 3\times (49,0 frente a 48,5). Para la segmentación semántica con UPerNet, FocalNet base a escala única supera a Swin en 2,4 y vence a Swin a multi-escala (50,5 frente a 49,7). Utilizando FocalNet grande y Mask2former, alcanzamos 58,5 mIoU para la segmentación semántica de ADE20K, y 57,9 PQ para la Segmentación Panóptica de COCO. Utilizando FocalNet enorme y DINO, alcanzamos 64,3 y 64,4 mAP en COCO minival y test-dev, respectivamente, estableciendo un nuevo SoTA por encima de modelos basados en atención mucho más grandes como Swinv2-G y BEIT-3.*

Este modelo fue aportado por [nielsr](https://huggingface.co/nielsr). El código original se puede encontrar [aquí](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)
```

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

**Parámetros:**

image_size (`Union[int, list[int], tuple[int, int]]`, *opcional*, valor predeterminado `224`) : El tamaño (resolución) de cada imagen.

patch_size (`Union[int, list[int], tuple[int, int]]`, *opcional*, valor predeterminado `4`) : El tamaño (resolución) de cada parche.

num_channels (`int`, *opcional*, valor predeterminado `3`) : El número de canales de entrada.

embed_dim (`int`, *opcional*, valor predeterminado `96`) : Dimensionalidad de las incrustaciones y los estados ocultos.

use_conv_embed (`bool`, *opcional*, valor predeterminado `False`) : Si se debe usar incrustación convolucional. Los autores señalaron que el uso de incrustación convolucional suele mejorar el rendimiento, pero no se utiliza de forma predeterminada.

hidden_sizes (`Union[list[int], tuple[int, ...]]`, *opcional*, valor predeterminado `(192, 384, 768, 768)`) : Dimensionalidad (tamaño oculto) en cada etapa del modelo.

depths (`Union[list[int], tuple[int, ...]]`, *opcional*, valor predeterminado `(2, 2, 6, 2)`) : Profundidad de cada capa en el Transformer.

focal_levels (`list(int)`, *opcional*, valor predeterminado `[2, 2, 2, 2]`) : Número de niveles focales en cada capa de las respectivas etapas del codificador.

focal_windows (`list(int)`, *opcional*, valor predeterminado `[3, 3, 3, 3]`) : Tamaño de la ventana focal en cada capa de las respectivas etapas del codificador.

hidden_act (`str`, *opcional*, valor predeterminado `gelu`) : La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, `"gelu"`, `"relu"`, `"silu"`, etc.

mlp_ratio (`float`, *opcional*, valor predeterminado `4.0`) : Proporción entre la dimensión oculta del MLP y la dimensión de incrustación.

hidden_dropout_prob (`float`, *opcional*, valor predeterminado 0.0) : La probabilidad de dropout para todas las capas totalmente conectadas en las incrustaciones y el codificador.

drop_path_rate (`Union[float, int]`, *opcional*, valor predeterminado `0.1`) : Tasa de drop path para la fusión de parches.

use_layerscale (`bool`, *opcional*, valor predeterminado `False`) : Si se debe usar layer scale en el codificador.

layerscale_value (`float`, *opcional*, valor predeterminado 0.0001) : El valor inicial de la escala de la capa.

use_post_layernorm (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe usar la normalización posterior a la capa en el codificador.

use_post_layernorm_in_modulation (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe usar la normalización posterior a la capa en la capa de modulación.

normalize_modulator (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe normalizar el modulador.

initializer_range (`float`, *opcional*, valor predeterminado `0.02`) : La desviación estándar de truncated_normal_initializer para inicializar todas las matrices de pesos.

layer_norm_eps (`float`, *opcional*, valor predeterminado `1e-05`) : El epsilon utilizado por las capas de normalización de capas.

encoder_stride (`int`, *opcional*, valor predeterminado: 32) : Factor para aumentar la resolución espacial en la cabeza del decodificador para el modelado de imágenes enmascaradas.

Esta es la clase de configuración para almacenar la configuración de un FocalNetModel. Se utiliza para instanciar un modelo Focalnet según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de [microsoft/focalnet-tiny](https://huggingface.co/microsoft/focalnet-tiny)

Los objetos de configuración heredan de [PreTrainedConfig](/docs/transformers/main/es/main_classes/configuration#transformers.PreTrainedConfig) y se pueden utilizar para controlar las salidas del modelo. Consulte la documentación de [PreTrainedConfig](/docs/transformers/main/es/main_classes/configuration#transformers.PreTrainedConfig) para obtener más información.

Ejemplo:

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

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

**Parámetros:**

config ([FocalNetConfig](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/main/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

add_pooling_layer (`bool`, *opcional*, valor predeterminado `True`) : Si se debe añadir una capa de pooling

use_mask_token (`bool`, *opcional*, valor predeterminado `False`) : Si se debe usar un token de máscara para el modelado de imágenes enmascaradas.

El modelo Focalnet básico que emite estados ocultos sin ningún cabezal específico en la parte superior.

Este modelo hereda de [PreTrainedModel](/docs/transformers/main/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### 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)
```

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

**Parámetros:**

pixel_values (`torch.FloatTensor` de forma `(batch_size, num_channels, image_size, image_size)`, *opcional*) : Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener mediante [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor). Consulte [BitImageProcessor.__call__()](/docs/transformers/main/es/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) para obtener más detalles (`processor_class` utiliza [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor) para procesar las imágenes).

bool_masked_pos (`torch.BoolTensor` de forma `(batch_size, num_patches)`) : Posiciones enmascaradas booleanas. Indica qué parches están enmascarados (1) y cuáles no (0).

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/main/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** `FocalNetModelOutput` o `tuple(torch.FloatTensor)`

Un `FocalNetModelOutput` o una tupla de `torch.FloatTensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FocalNetConfig](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetConfig)) y las entradas.

El método forward de [FocalNetModel](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetModel) reemplaza el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **last_hidden_state** (`torch.FloatTensor` de forma `(batch_size, sequence_length, hidden_size)`, *opcional*) -- Secuencia de estados ocultos en la salida de la última capa del modelo.
- **pooler_output** (`torch.FloatTensor` de forma `(batch_size, hidden_size)`, *opcional*, se devuelve cuando se pasa `add_pooling_layer=True`) -- Promedio de pooling del estado oculto de la última capa.
- **hidden_states** (`tuple[torch.FloatTensor]`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.FloatTensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **reshaped_hidden_states** (`tuple(torch.FloatTensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.FloatTensor` (una para la salida de los embeddings + una para la salida de cada etapa) de forma `(batch_size, hidden_size, height, width)`.

  Estados ocultos del modelo en la salida de cada capa, más las salidas de la incrustación inicial reconfiguradas para incluir las dimensiones espaciales.

Ejemplo:

```python
```

## FocalNetForMaskedImageModeling[[transformers.FocalNetForMaskedImageModeling]]

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

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

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

**Parámetros:**

config ([FocalNetConfig](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/main/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

Modelo FocalNet con un decodificador en la parte superior para el modelado de imágenes enmascaradas.

Esto sigue la misma implementación que en [SimMIM](https://huggingface.co/papers/2111.09886).

Este modelo hereda de [PreTrainedModel](/docs/transformers/main/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### 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)
```

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

**Parámetros:**

pixel_values (`torch.FloatTensor` de forma `(batch_size, num_channels, image_size, image_size)`, *opcional*) : Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener mediante [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor). Consulte [BitImageProcessor.__call__()](/docs/transformers/main/es/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) para obtener más detalles (`processor_class` utiliza [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor) para procesar las imágenes).

bool_masked_pos (`torch.BoolTensor` de forma `(batch_size, num_patches)`) : Posiciones enmascaradas booleanas. Indica qué parches están enmascarados (1) y cuáles no (0).

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/main/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** `FocalNetMaskedImageModelingOutput` o `tuple(torch.FloatTensor)`

Un `FocalNetMaskedImageModelingOutput` o una tupla de `torch.FloatTensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FocalNetConfig](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetConfig)) y las entradas.

El método forward de [FocalNetForMaskedImageModeling](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetForMaskedImageModeling) sobrescribe el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.FloatTensor` de forma `(1,)`, *opcional*, se devuelve cuando se proporciona `bool_masked_pos`) -- Pérdida de modelado de imagen enmascarada (MLM).
- **reconstrucción** (`torch.FloatTensor` de forma `(batch_size, num_channels, height, width)`) -- Valores de píxeles reconstruidos.
- **hidden_states** (`tuple[torch.FloatTensor]`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.FloatTensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **reshaped_hidden_states** (`tuple(torch.FloatTensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.FloatTensor` (una para la salida de los embeddings + una para la salida de cada etapa) de forma `(batch_size, hidden_size, height, width)`.

  Estados ocultos del modelo en la salida de cada capa, más las salidas de la incrustación inicial reconfiguradas para incluir las dimensiones espaciales.

Ejemplos:
```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)
```

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

**Parámetros:**

config ([FocalNetConfig](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetConfig)) : Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método [from_pretrained()](/docs/transformers/main/es/main_classes/model#transformers.PreTrainedModel.from_pretrained) para cargar los pesos del modelo.

Modelo FocalNet con una cabeza de clasificación de imágenes en la parte superior (una capa lineal sobre la salida agrupada), por ejemplo, para ImageNet.

Este modelo hereda de [PreTrainedModel](/docs/transformers/main/es/main_classes/model#transformers.PreTrainedModel). Consulte la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

#### 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)
```

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

**Parámetros:**

pixel_values (`torch.FloatTensor` de forma `(batch_size, num_channels, image_size, image_size)`, *opcional*) : Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener mediante [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor). Consulte [BitImageProcessor.__call__()](/docs/transformers/main/es/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) para obtener más detalles (`processor_class` utiliza [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor) para procesar las imágenes).

labels (`torch.LongTensor` de forma `(batch_size,)`, *opcional*) : Etiquetas para calcular la pérdida de clasificación/regresión de imagen. Los índices deben estar en `[0, ..., config.num_labels - 1]`. Si `config.num_labels == 1` se calcula una pérdida de regresión (pérdida de error cuadrático medio), si `config.num_labels > 1` se calcula una pérdida de clasificación (entropía cruzada).

output_hidden_states (`bool`, *opcional*) : Indica si se deben devolver los estados ocultos de todas las capas. Consulte `hidden_states` en los tensores devueltos para obtener más detalles.

return_dict (`bool`, *opcional*) : Indica si se debe devolver un [ModelOutput](/docs/transformers/main/es/main_classes/output#transformers.utils.ModelOutput) en lugar de una tupla simple.

**Devuelve:** `FocalNetImageClassifierOutput` o `tuple(torch.FloatTensor)`

Un `FocalNetImageClassifierOutput` o una tupla de `torch.FloatTensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([FocalNetConfig](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetConfig)) y las entradas.

El método forward de [FocalNetForImageClassification](/docs/transformers/main/es/model_doc/focalnet#transformers.FocalNetForImageClassification) reemplaza el método especial `__call__`.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de `Module` después, en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de preprocesamiento y posprocesamiento, mientras que la segunda los ignora silenciosamente.

- **loss** (`torch.FloatTensor` de forma `(1,)`, *opcional*, se devuelve cuando se proporciona `labels`) -- Pérdida de clasificación (o de regresión si config.num_labels==1).
- **logits** (`torch.FloatTensor` de forma `(batch_size, config.num_labels)`) -- Puntuaciones de clasificación (o de regresión si config.num_labels==1) (antes de SoftMax).
- **hidden_states** (`tuple[torch.FloatTensor]`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.FloatTensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma `(batch_size, sequence_length, hidden_size)`.

  Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
- **reshaped_hidden_states** (`tuple(torch.FloatTensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.FloatTensor` (una para la salida de los embeddings + una para la salida de cada etapa) de forma `(batch_size, hidden_size, height, width)`.

  Estados ocultos del modelo en la salida de cada capa, más las salidas de la incrustación inicial reconfiguradas para incluir las dimensiones espaciales.

Ejemplo:

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

