U
    ,-e                     @   sB   d Z ddlmZ ddlmZ eeZddiZG dd deZ	dS )	z RegNet model configuration   )PretrainedConfig)loggingzfacebook/regnet-y-040zBhttps://huggingface.co/facebook/regnet-y-040/blob/main/config.jsonc                       sL   e Zd ZdZdZddgZddddd	d
gddddgdddf fdd	Z  ZS )RegNetConfiga  
    This is the configuration class to store the configuration of a [`RegNetModel`]. It is used to instantiate a RegNet
    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 RegNet
    [facebook/regnet-y-040](https://huggingface.co/facebook/regnet-y-040) architecture.

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

    Args:
        num_channels (`int`, *optional*, defaults to 3):
            The number of input channels.
        embedding_size (`int`, *optional*, defaults to 64):
            Dimensionality (hidden size) for the embedding layer.
        hidden_sizes (`List[int]`, *optional*, defaults to `[256, 512, 1024, 2048]`):
            Dimensionality (hidden size) at each stage.
        depths (`List[int]`, *optional*, defaults to `[3, 4, 6, 3]`):
            Depth (number of layers) for each stage.
        layer_type (`str`, *optional*, defaults to `"y"`):
            The layer to use, it can be either `"x" or `"y"`. An `x` layer is a ResNet's BottleNeck layer with
            `reduction` fixed to `1`. While a `y` layer is a `x` but with squeeze and excitation. Please refer to the
            paper for a detailed explanation of how these layers were constructed.
        hidden_act (`str`, *optional*, defaults to `"relu"`):
            The non-linear activation function in each block. If string, `"gelu"`, `"relu"`, `"selu"` and `"gelu_new"`
            are supported.
        downsample_in_first_stage (`bool`, *optional*, defaults to `False`):
            If `True`, the first stage will downsample the inputs using a `stride` of 2.

    Example:
    ```python
    >>> from transformers import RegNetConfig, RegNetModel

    >>> # Initializing a RegNet regnet-y-40 style configuration
    >>> configuration = RegNetConfig()
    >>> # Initializing a model from the regnet-y-40 style configuration
    >>> model = RegNetModel(configuration)
    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```
    Zregnetxyr             i   i@           @   Zreluc           	         sh   t  jf | || jkr4td| dd| j || _|| _|| _|| _|| _	|| _
|| _d| _d S )Nzlayer_type=z is not one of ,T)super__init__layer_types
ValueErrorjoinnum_channelsembedding_sizehidden_sizesdepthsgroups_width
layer_type
hidden_actZdownsample_in_first_stage)	selfr   r   r   r   r   r   r   kwargs	__class__ p/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/transformers/models/regnet/configuration_regnet.pyr   H   s    
zRegNetConfig.__init__)__name__
__module____qualname____doc__Z
model_typer   r   __classcell__r   r   r   r    r      s   (

r   N)
r$   Zconfiguration_utilsr   utilsr   Z
get_loggerr!   loggerZ$REGNET_PRETRAINED_CONFIG_ARCHIVE_MAPr   r   r   r   r    <module>   s   
 