# Hiera

## Resumen

Hiera fue propuesto en [Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles](https://huggingface.co/papers/2306.00989) por Chaitanya Ryali, Yuan-Ting Hu, Daniel Bolya, Chen Wei, Haoqi Fan, Po-Yao Huang, Vaibhav Aggarwal, Arkabandhu Chowdhury, Omid Poursaeed, Judy Hoffman, Jitendra Malik, Yanghao Li, Christoph Feichtenhofer

El artículo presenta "Hiera", un Vision Transformer jerárquico que simplifica la arquitectura de los transformadores jerárquicos de visión modernos al eliminar componentes innecesarios sin comprometer la precisión ni la eficiencia. A diferencia de los transformadores tradicionales, que añaden componentes específicos de visión complejos para mejorar el rendimiento en clasificación supervisada, Hiera demuestra que dichas adiciones, a menudo denominadas "bells-and-whistles", no son esenciales para lograr una alta precisión. Al aprovechar una fuerte tarea de pretexto visual (MAE) para el preentrenamiento, Hiera mantiene la simplicidad y logra una precisión y velocidad superiores tanto en la inferencia como en el entrenamiento en diversas tareas de reconocimiento de imágenes y videos. El enfoque sugiere que los sesgos espaciales necesarios para las tareas de visión pueden aprenderse de manera efectiva mediante un preentrenamiento adecuado, eliminando la necesidad de una complejidad arquitectónica adicional.

El resumen del artículo es el siguiente:

*Los transformadores jerárquicos de visión modernos han incorporado varios componentes específicos de visión en la búsqueda de un rendimiento de clasificación supervisada. Si bien estos componentes conducen a precisiones efectivas y recuentos de FLOP atractivos, la complejidad añadida hace que estos transformadores sean en realidad más lentos que sus equivalentes ViT básicos. En este artículo, argumentamos que este volumen adicional es innecesario. Al realizar el preentrenamiento con una tarea visual previa fuerte (MAE), podemos eliminar todos los adornos de un transformador de visión multinivel de última generación sin perder precisión. En el proceso, creamos Hiera, un transformador de visión jerárquico extremadamente simple que es más preciso que los modelos anteriores y, al mismo tiempo, significativamente más rápido tanto en la inferencia como durante el entrenamiento. Evaluamos Hiera en una variedad de tareas para el reconocimiento de imágenes y videos. Nuestro código y modelos están disponibles en https://github.com/facebookresearch/hiera.*

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/hiera_overview.png"
alt="drawing" width="600"/>

 Arquitectura de Hiera. Tomada del artículo original.

Este modelo fue una contribución conjunta de [EduardoPacheco](https://huggingface.co/EduardoPacheco) y [namangarg110](https://huggingface.co/namangarg110). El código original se puede encontrar [aquí] (https://github.com/facebookresearch/hiera).

## Recursos

Una lista de recursos oficiales de Hugging Face y de la comunidad (indicados con 🌎) para ayudarte a empezar con Hiera. Si te interesa enviar un recurso para que se incluya aquí, no dudes en abrir una Pull Request y lo revisaremos. Lo ideal es que el recurso demuestre algo nuevo en lugar de duplicar un recurso existente.

- [HieraForImageClassification](/docs/transformers/main/es/model_doc/hiera#transformers.HieraForImageClassification) es compatible con este [notebook](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb).
- Véase también: [Guía de la tarea de clasificación de imágenes](../tasks/image_classification)

## HieraConfig[[transformers.HieraConfig]]

#### transformers.HieraConfig[[transformers.HieraConfig]]

```python
transformers.HieraConfig(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, embed_dim: int = 96, image_size: list[int] | tuple[int, ...] = (224, 224), patch_size: list[int] | tuple[int, ...] = (7, 7), patch_stride: list[int] | tuple[int, ...] = (4, 4), patch_padding: list[int] | tuple[int, ...] = (3, 3), mlp_ratio: float = 4.0, depths: list[int] | tuple[int, ...] = (2, 3, 16, 3), num_heads: list[int] | tuple[int, ...] = (1, 2, 4, 8), embed_dim_multiplier: float | int = 2.0, num_query_pool: int = 3, query_stride: list[int] | tuple[int, ...] = (2, 2), masked_unit_size: list[int] | tuple[int, ...] = (8, 8), masked_unit_attention: list[bool] | tuple[bool, ...] = (True, True, False, False), drop_path_rate: float | int = 0.0, num_channels: int = 3, hidden_act: str = 'gelu', initializer_range: float = 0.02, layer_norm_init: float = 1.0, layer_norm_eps: float = 1e-06, decoder_hidden_size: int | None = None, decoder_depth: int | None = None, decoder_num_heads: int | None = None, normalize_pixel_loss: bool | None = True, mask_ratio: float = 0.6, _out_features: list[str] | None = None, _out_indices: list[int] | None = None)
```

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

**Parámetros:**

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

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

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

patch_stride (`list(int)`, *opcional*, valor predeterminado `[4, 4]`) : El paso del parche.

patch_padding (`list(int)`, *opcional*, valor predeterminado `[3, 3]`) : El relleno del parche.

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

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

num_heads (`list(int)`, *opcional*, valor predeterminado `[1, 2, 4, 8]`) : Número de cabezas de atención en cada capa del codificador Transformer.

embed_dim_multiplier (`float`, *opcional*, valor predeterminado 2.0) : El multiplicador de la dimensionalidad de la incrustación de parches en cada capa del codificador Transformer.

num_query_pool (`int`, *opcional*, valor predeterminado 3) : El número de etapas de pool de consultas.

query_stride (`list(int)`, *opcional*, valor predeterminado `[2, 2]`) : El paso de la consulta de agrupación.

masked_unit_size (`list(int)`, *opcional*, valor predeterminado `[8, 8]`) : El tamaño de la unidad enmascarada.

masked_unit_attention (`list(bool)`, *opcional*, valor predeterminado `[True, True, False, False]`) : Si se debe usar atención unitaria enmascarada en cada capa del codificador Transformer.

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

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

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.

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_init (`float`, *opcional*, valor predeterminado 1.0) : Valor de peso inicial para las capas de normalización de capas.

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

decoder_hidden_size (`int`, *opcional*) : Dimensión de las representaciones ocultas.

decoder_depth (`int`, *opcional*) : Profundidad del decodificador para el preentrenamiento de MAE.

decoder_num_heads (`int`, *opcional*) : Número de cabezas de atención para cada capa de atención en el decodificador del Transformer.

normalize_pixel_loss (`bool`, *opcional*, valor predeterminado `True`) : Indica si se debe normalizar la pérdida de píxeles por el número de píxeles.

mask_ratio (`float`, *opcional*, valor predeterminado 0.6) : La proporción de tokens enmascarados en la entrada.

Esta es la clase de configuración para almacenar la configuración de un HieraModel. Se utiliza para instanciar un modelo Hiera 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 [facebook/hiera-base-224](https://huggingface.co/facebook/hiera-base-224)

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 HieraConfig, HieraModel

>>> # Initializing a Hiera hiera-base-patch16-224 style configuration
>>> configuration = HieraConfig()

>>> # Initializing a model (with random weights) from the hiera-base-patch16-224 style configuration
>>> model = HieraModel(configuration)

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

## HieraModel[[transformers.HieraModel]]

#### transformers.HieraModel[[transformers.HieraModel]]

```python
transformers.HieraModel(config: HieraConfig, add_pooling_layer: bool = True, is_mae: bool = False)
```

[Fuente](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L800)

**Parámetros:**

config ([HieraConfig](/docs/transformers/main/es/model_doc/hiera#transformers.HieraConfig)) : 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`) : Indica si se debe aplicar la capa de pooling.

is_mae (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe ejecutar el modelo en modo MAE.

El modelo Hiera 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.HieraModel.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, interpolate_pos_encoding: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L824)

**Parámetros:**

pixel_values (`torch.Tensor` 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).

noise (`torch.Tensor` de forma `(batch_size, num_mask_units)`, *opcional*) : Se utiliza principalmente con fines de prueba para controlar la aleatoriedad y mantener la reproducibilidad

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

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.

interpolate_pos_encoding (`bool`, *opcional*) : Si se debe interpolar las codificaciones de posición preentrenadas.

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:** [BaseModelOutputWithPooling](/docs/transformers/main/es/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) o `tuple(torch.Tensor)`

Un [BaseModelOutputWithPooling](/docs/transformers/main/es/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) o una tupla de `torch.Tensor` (si se pasa `return_dict=False` o cuando `config.return_dict=False`) que comprende varios elementos según la configuración ([HieraConfig](/docs/transformers/main/es/model_doc/hiera#transformers.HieraConfig)) y las entradas.

El método forward de [HieraModel](/docs/transformers/main/es/model_doc/hiera#transformers.HieraModel) 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.Tensor` de forma `(batch_size, sequence_length, hidden_size)`) -- Secuencia de estados ocultos en la salida de la última capa del modelo.
- **pooler_output** (`torch.Tensor` de forma `(batch_size, hidden_size)`) -- Estado oculto de la última capa del primer token de la secuencia (token de clasificación) después de un procesamiento adicional a través de las capas utilizadas para la tarea de preentrenamiento auxiliar. Por ejemplo, para la familia de modelos BERT, esto devuelve el token de clasificación después de procesarlo a través de una capa lineal y una función de activación tanh. Los pesos de la capa lineal se entrenan a partir del objetivo de predicción de la siguiente oración (clasificación) durante el preentrenamiento.
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (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.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

```python
```

## HieraForPreTraining[[transformers.HieraForPreTraining]]

#### transformers.HieraForPreTraining[[transformers.HieraForPreTraining]]

```python
transformers.HieraForPreTraining(config: HieraConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1061)

**Parámetros:**

config ([HieraConfig](/docs/transformers/main/es/model_doc/hiera#transformers.HieraConfig)) : 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.

El transformador del modelo Hiera con el decodificador en la parte superior para el preentrenamiento auto-supervisado.

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.HieraForPreTraining.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, interpolate_pos_encoding: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1102)

**Parámetros:**

pixel_values (`torch.Tensor` 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).

noise (`torch.Tensor` de forma `(batch_size, num_mask_units)`, *opcional*) : Se utiliza principalmente con fines de prueba para controlar la aleatoriedad y mantener la reproducibilidad

output_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

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.

interpolate_pos_encoding (`bool`, *opcional*) : Si se debe interpolar las codificaciones de posición preentrenadas.

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:** `HieraForPreTrainingOutput` o `tuple(torch.Tensor)`

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

El método forward de [HieraForPreTraining](/docs/transformers/main/es/model_doc/hiera#transformers.HieraForPreTraining) 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.Tensor` de forma `(1,)`) -- Pérdida de reconstrucción de píxeles.
- **logits** (`torch.Tensor` de forma `(batch_size, sequence_length, patch_size ** 2 * num_channels)`) -- Logits de reconstrucción de píxeles.
- **bool_masked_pos** (`torch.BoolTensor` de forma `(batch_size, sequence_length)`) -- Tensor que indica qué parches están enmascarados (0) y cuáles no (1).
- **ids_restore** (`torch.LongTensor` de forma `(batch_size, sequence_length)`) -- Tensor que contiene el índice original de los parches enmascarados (barajados).
- **hidden_states** (`tuple[torch.Tensor]`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + 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.
- **attentions** (`tuple[torch.Tensor]`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, sequence_length, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings + una para la salida de cada capa) de forma `(batch_size, height, width, hidden_size)`. Estados ocultos del modelo en la salida de cada capa más las salidas de los embeddings iniciales, reorganizados para incluir las dimensiones espaciales.

Ejemplos:
```python
>>> from transformers import AutoImageProcessor, HieraForPreTraining
>>> 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("facebook/hiera-tiny-224-mae-hf")
>>> model = HieraForPreTraining.from_pretrained("facebook/hiera-tiny-224-mae-hf")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> loss = outputs.loss
>>> print(list(logits.shape))
[1, 196, 768]
```

## HieraForImageClassification[[transformers.HieraForImageClassification]]

#### transformers.HieraForImageClassification[[transformers.HieraForImageClassification]]

```python
transformers.HieraForImageClassification(config: HieraConfig)
```

[Fuente](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1207)

**Parámetros:**

config ([HieraConfig](/docs/transformers/main/es/model_doc/hiera#transformers.HieraConfig)) : 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.

Transformador del modelo Hiera con una cabeza de clasificación de imágenes en la parte superior (una capa lineal sobre el estado oculto final con pooling promedio), por ejemplo, para ImageNet.

Tenga en cuenta que es posible realizar el ajuste fino de Hiera en imágenes de mayor resolución que las utilizadas en su entrenamiento, estableciendo `interpolate_pos_encoding` en `True` en el forward del modelo. Esto interpolará los embeddings de posición preentrenados a la mayor resolución.

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.HieraForImageClassification.forward]]

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

[Fuente](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1222)

**Parámetros:**

pixel_values (`` of shape `(batch_size, num_channels, image_size, image_size)`) : The tensors corresponding to the input images. Pixel values can be obtained using [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor). See [BitImageProcessor.__call__()](/docs/transformers/main/es/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) for details (`processor_class` uses [BitImageProcessor](/docs/transformers/main/es/model_doc/bit#transformers.BitImageProcessor) for processing images).

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_attentions (`bool`, *opcional*) : Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte `attentions` en los tensores devueltos para obtener más detalles.

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.

interpolate_pos_encoding (`bool`, *opcional*) : Si se debe interpolar las codificaciones de posición preentrenadas.

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:** `HieraForImageClassificationOutput` o `tuple(torch.Tensor)`

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

El método forward de [HieraForImageClassification](/docs/transformers/main/es/model_doc/hiera#transformers.HieraForImageClassification) 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.Tensor` 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.Tensor` 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.Tensor)`, *opcional*, devuelto cuando se pasa `output_hidden_states=True` o cuando `config.output_hidden_states=True`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada etapa) de forma `(batch_size, sequence_length, hidden_size)`. Hidden-states (también llamados feature maps) del modelo en la salida de cada etapa.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, se devuelve cuando se pasa `output_attentions=True` o cuando `config.output_attentions=True`) -- Tupla de `torch.Tensor` (una por cada capa) de forma `(batch_size, num_heads, patch_size, sequence_length)`.

  Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, `optional`) -- Tupla de `torch.Tensor` (una para la salida de los embeddings + una para la salida de cada etapa) de forma `(batch_size, height, width, hidden_size)`. Estos son los estados ocultos del modelo redimensionados y reorganizados.

  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, HieraForImageClassification
>>> import torch
>>> from datasets import load_dataset

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/hiera-base-224")
>>> model = HieraForImageClassification.from_pretrained("facebook/hiera-base-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])
...
```

