
    g                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  ej        e          Z G d	 d
e          Z G d de
          ZdS )zMobileViTV2 model configuration    OrderedDict)Mapping)version   )PretrainedConfig)
OnnxConfig)loggingc                   \     e Zd ZdZdZdddddddd	d
ddg dd	dg dg dddddf fd	Z xZS )MobileViTV2Configa  
    This is the configuration class to store the configuration of a [`MobileViTV2Model`]. It is used to instantiate a
    MobileViTV2 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 MobileViTV2
    [apple/mobilevitv2-1.0](https://huggingface.co/apple/mobilevitv2-1.0) 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.
        image_size (`int`, *optional*, defaults to 256):
            The size (resolution) of each image.
        patch_size (`int`, *optional*, defaults to 2):
            The size (resolution) of each patch.
        expand_ratio (`float`, *optional*, defaults to 2.0):
            Expansion factor for the MobileNetv2 layers.
        hidden_act (`str` or `function`, *optional*, defaults to `"swish"`):
            The non-linear activation function (function or string) in the Transformer encoder and convolution layers.
        conv_kernel_size (`int`, *optional*, defaults to 3):
            The size of the convolutional kernel in the MobileViTV2 layer.
        output_stride (`int`, *optional*, defaults to 32):
            The ratio of the spatial resolution of the output to the resolution of the input image.
        classifier_dropout_prob (`float`, *optional*, defaults to 0.1):
            The dropout ratio for attached classifiers.
        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.
        aspp_out_channels (`int`, *optional*, defaults to 512):
            Number of output channels used in the ASPP layer for semantic segmentation.
        atrous_rates (`List[int]`, *optional*, defaults to `[6, 12, 18]`):
            Dilation (atrous) factors used in the ASPP layer for semantic segmentation.
        aspp_dropout_prob (`float`, *optional*, defaults to 0.1):
            The dropout ratio for the ASPP layer for semantic segmentation.
        semantic_loss_ignore_index (`int`, *optional*, defaults to 255):
            The index that is ignored by the loss function of the semantic segmentation model.
        n_attn_blocks (`List[int]`, *optional*, defaults to `[2, 4, 3]`):
            The number of attention blocks in each MobileViTV2Layer
        base_attn_unit_dims (`List[int]`, *optional*, defaults to `[128, 192, 256]`):
            The base multiplier for dimensions of attention blocks in each MobileViTV2Layer
        width_multiplier (`float`, *optional*, defaults to 1.0):
            The width multiplier for MobileViTV2.
        ffn_multiplier (`int`, *optional*, defaults to 2):
            The FFN multiplier for MobileViTV2.
        attn_dropout (`float`, *optional*, defaults to 0.0):
            The dropout in the attention layer.
        ffn_dropout (`float`, *optional*, defaults to 0.0):
            The dropout between FFN layers.

    Example:

    ```python
    >>> from transformers import MobileViTV2Config, MobileViTV2Model

    >>> # Initializing a mobilevitv2-small style configuration
    >>> configuration = MobileViTV2Config()

    >>> # Initializing a model from the mobilevitv2-small style configuration
    >>> model = MobileViTV2Model(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```mobilevitv2r         g       @swish    g?g{Gz?gh㈵>i   )            )r      r   )      r   g      ?g        c                 R    t                      j        di | || _        || _        || _        || _        || _        || _        || _        |	| _	        |
| _
        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        d S )N )super__init__num_channels
image_size
patch_sizeexpand_ratio
hidden_actconv_kernel_sizeoutput_strideinitializer_rangelayer_norm_epsn_attn_blocksbase_attn_unit_dimswidth_multiplierffn_multiplierffn_dropoutattn_dropoutclassifier_dropout_probaspp_out_channelsatrous_ratesaspp_dropout_probsemantic_loss_ignore_index)selfr   r   r   r    r!   r"   r#   r,   r$   r%   r-   r.   r/   r0   r&   r'   r(   r)   r+   r*   kwargs	__class__s                         u/var/www/html/ai-engine/env/lib/python3.11/site-packages/transformers/models/mobilevitv2/configuration_mobilevitv2.pyr   zMobileViTV2Config.__init__c   s    0 	""6"""($$($ 0*!2,*#6  0,&('>$ "3(!2*D'''    )__name__
__module____qualname____doc__
model_typer   __classcell__)r3   s   @r4   r   r      s        @ @D J  # [[#&ii+OO+/E /E /E /E /E /E /E /E /E /Er5   r   c                       e Zd Z ej        d          Zedeeee	ef         f         fd            Z
edeeee	ef         f         fd            Zedefd            ZdS )MobileViTV2OnnxConfigz1.11returnc                 0    t          ddddddfg          S )Npixel_valuesbatchr   heightwidth)r      r   r   r   r1   s    r4   inputszMobileViTV2OnnxConfig.inputs   s&    ^^PX]d-e-efghhhr5   c                 r    | j         dk    rt          dddifg          S t          dddifdddifg          S )Nzimage-classificationlogitsr   rA   last_hidden_statepooler_output)taskr   rE   s    r4   outputszMobileViTV2OnnxConfig.outputs   sS    9...Aw< 89:::!4q'l CoXY[bWcEdefffr5   c                     dS )Ng-C6?r   rE   s    r4   atol_for_validationz)MobileViTV2OnnxConfig.atol_for_validation   s    tr5   N)r6   r7   r8   r   parsetorch_onnx_minimum_versionpropertyr   strintrF   rL   floatrN   r   r5   r4   r=   r=      s        !.v!6!6iWS#X%6 67 i i i Xi ggc3h&7!78 g g g Xg U    X  r5   r=   N)r9   collectionsr   typingr   	packagingr   configuration_utilsr   onnxr	   utilsr
   
get_loggerr6   loggerr   r=   r   r5   r4   <module>r]      s    & % # # # # # #             3 3 3 3 3 3             
	H	%	%tE tE tE tE tE( tE tE tEn    J     r5   