
    cCiY                     r    S r SSKJr  SSKJr  SSKJrJr  \R                  " \	5      r
 " S S\\5      rS/rg)z6Neighborhood Attention Transformer model configuration   )PretrainedConfig)logging)BackboneConfigMixin*get_aligned_output_features_output_indicesc                   h   ^  \ rS rSrSrSrSSS.rSSS	/ S
Q/ SQSSSSSSSSSSSS4U 4S jjrSrU =r	$ )	NatConfig   a  
This is the configuration class to store the configuration of a [`NatModel`]. It is used to instantiate a Nat model
according to the specified arguments, defining the model architecture. Instantiating a configuration with the
defaults will yield a similar configuration to that of the Nat
[shi-labs/nat-mini-in1k-224](https://huggingface.co/shi-labs/nat-mini-in1k-224) architecture.

Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
documentation from [`PretrainedConfig`] for more information.

Args:
    patch_size (`int`, *optional*, defaults to 4):
        The size (resolution) of each patch. NOTE: Only patch size of 4 is supported at the moment.
    num_channels (`int`, *optional*, defaults to 3):
        The number of input channels.
    embed_dim (`int`, *optional*, defaults to 64):
        Dimensionality of patch embedding.
    depths (`list[int]`, *optional*, defaults to `[3, 4, 6, 5]`):
        Number of layers in each level of the encoder.
    num_heads (`list[int]`, *optional*, defaults to `[2, 4, 8, 16]`):
        Number of attention heads in each layer of the Transformer encoder.
    kernel_size (`int`, *optional*, defaults to 7):
        Neighborhood Attention kernel size.
    mlp_ratio (`float`, *optional*, defaults to 3.0):
        Ratio of MLP hidden dimensionality to embedding dimensionality.
    qkv_bias (`bool`, *optional*, defaults to `True`):
        Whether or not a learnable bias should be added to the queries, keys and values.
    hidden_dropout_prob (`float`, *optional*, defaults to 0.0):
        The dropout probability for all fully connected layers in the embeddings and encoder.
    attention_probs_dropout_prob (`float`, *optional*, defaults to 0.0):
        The dropout ratio for the attention probabilities.
    drop_path_rate (`float`, *optional*, defaults to 0.1):
        Stochastic depth rate.
    hidden_act (`str` or `function`, *optional*, defaults to `"gelu"`):
        The non-linear activation function (function or string) in the encoder. If string, `"gelu"`, `"relu"`,
        `"selu"` and `"gelu_new"` are supported.
    initializer_range (`float`, *optional*, defaults to 0.02):
        The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
    layer_norm_eps (`float`, *optional*, defaults to 1e-05):
        The epsilon used by the layer normalization layers.
    layer_scale_init_value (`float`, *optional*, defaults to 0.0):
        The initial value for the layer scale. Disabled if <=0.
    out_features (`list[str]`, *optional*):
        If used as backbone, list of features to output. Can be any of `"stem"`, `"stage1"`, `"stage2"`, etc.
        (depending on how many stages the model has). If unset and `out_indices` is set, will default to the
        corresponding stages. If unset and `out_indices` is unset, will default to the last stage. Must be in the
        same order as defined in the `stage_names` attribute.
    out_indices (`list[int]`, *optional*):
        If used as backbone, list of indices of features to output. Can be any of 0, 1, 2, etc. (depending on how
        many stages the model has). If unset and `out_features` is set, will default to the corresponding stages.
        If unset and `out_features` is unset, will default to the last stage. Must be in the
        same order as defined in the `stage_names` attribute.

Example:

```python
>>> from transformers import NatConfig, NatModel

>>> # Initializing a Nat shi-labs/nat-mini-in1k-224 style configuration
>>> configuration = NatConfig()

>>> # Initializing a model (with random weights) from the shi-labs/nat-mini-in1k-224 style configuration
>>> model = NatModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```nat	num_heads
num_layers)num_attention_headsnum_hidden_layersr      @   )r   r         )   r            g      @Tg        g?gelug{Gz?gh㈵>Nc                   > [         TU ]  " S0 UD6  Xl        X l        X0l        X@l        [        U5      U l        XPl        X`l	        Xpl
        Xl        Xl        Xl        Xl        Xl        Xl        Xl        [%        US[        U5      S-
  -  -  5      U l        Xl        S/[+        S[        U5      S-   5       Vs/ s H  nSU 3PM
     sn-   U l        [/        UUU R,                  S9u  U l        U l        g s  snf )Nr      stemstage)out_featuresout_indicesstage_names )super__init__
patch_sizenum_channels	embed_dimdepthslenr   r   kernel_size	mlp_ratioqkv_biashidden_dropout_probattention_probs_dropout_probdrop_path_rate
hidden_actlayer_norm_epsinitializer_rangeinthidden_sizelayer_scale_init_valueranger   r   _out_features_out_indices)selfr"   r#   r$   r%   r   r'   r(   r)   r*   r+   r,   r-   r/   r.   r2   r   r   kwargsidx	__class__s                       n/home/james-whalen/.local/lib/python3.13/site-packages/transformers/models/deprecated/nat/configuration_nat.pyr!   NatConfig.__init__d   s    * 	"6"$("f+"&" #6 ,H),$,!2 y1Vq+AAB&<#"8aVWX@Y&Z@Yse}@Y&ZZ0Z%;DL\L\1
-D- '[s   :C6)r4   r5   r+   r%   r,   r$   r-   r*   r1   r/   r'   r.   r2   r(   r#   r   r   r"   r)   r   )
__name__
__module____qualname____firstlineno____doc__
model_typeattribute_mapr!   __static_attributes____classcell__)r9   s   @r:   r   r      s_    AF J  +)M %("%-
 -
    r   N)r@   configuration_utilsr   utilsr   utils.backbone_utilsr   r   
get_loggerr<   loggerr   __all__r   rE   r:   <module>rL      sA    = 4  d 
		H	%x
#%5 x
v -rE   