

from typing import TYPE_CHECKING

from ..utils import _LazyModule


_UpperCAmelCase	:     Any		       = {
    """config""": [
        """EXTERNAL_DATA_FORMAT_SIZE_LIMIT""",
        """OnnxConfig""",
        """OnnxConfigWithPast""",
        """OnnxSeq2SeqConfigWithPast""",
        """PatchingSpec""",
    ],
    """convert""": ["""export""", """validate_model_outputs"""],
    """features""": ["""FeaturesManager"""],
    """utils""": ["""ParameterFormat""", """compute_serialized_parameters_size"""],
}


if TYPE_CHECKING:
					from .config import (
					    EXTERNAL_DATA_FORMAT_SIZE_LIMIT,
					    OnnxConfig,
					    OnnxConfigWithPast,
					    OnnxSeqaSeqConfigWithPast,
					    PatchingSpec,
					)
					from .convert import export, validate_model_outputs
					from .features import FeaturesManager
					from .utils import ParameterFormat, compute_serialized_parameters_size

else:
					import sys

					_UpperCAmelCase	:     Any		       = _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)







from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


_UpperCAmelCase	:     int		       = logging.get_logger(__name__)

_UpperCAmelCase	:     Any		       = {
    """facebook/levit-128S""": """https://huggingface.co/facebook/levit-128S/resolve/main/config.json""",
    # See all LeViT models at https://huggingface.co/models?filter=levit
}







class 				lowercase       ( lowercase_    ):
				__SCREAMING_SNAKE_CASE      :				int     =    '''levit'''




				def __init__(      self   ,     snake_case=224   ,     snake_case=3   ,     snake_case=3   ,     snake_case=2   ,     snake_case=1   ,     snake_case=16   ,     snake_case=[128, 256, 384]   ,     snake_case=[4, 8, 12]   ,     snake_case=[4, 4, 4]   ,     snake_case=[16, 16, 16]   ,     snake_case=0   ,     snake_case=[2, 2, 2]   ,     snake_case=[2, 2, 2]   ,     snake_case=0.02   ,     **snake_case   ,     ):
											super().__init__(**snake_case )
											snake_case_           =					image_size
											snake_case_           =					num_channels
											snake_case_           =					kernel_size
											snake_case_           =					stride
											snake_case_           =					padding
											snake_case_           =					hidden_sizes
											snake_case_           =					num_attention_heads
											snake_case_           =					depths
											snake_case_           =					key_dim
											snake_case_           =					drop_path_rate
											snake_case_           =					patch_size
											snake_case_           =					attention_ratio
											snake_case_           =					mlp_ratio
											snake_case_           =					initializer_range
											snake_case_           =					[
											    ['Subsample', key_dim[0], hidden_sizes[0] // key_dim[0], 4, 2, 2],
											    ['Subsample', key_dim[0], hidden_sizes[1] // key_dim[0], 4, 2, 2],
											]







class 				lowercase       ( lowercase_    ):
				__SCREAMING_SNAKE_CASE      :				Dict     =    version.parse('''1.11'''    )




				@property
				def 					a							(      self ):
											return OrderedDict(
											    [
											        ('pixel_values', {0: 'batch', 1: 'num_channels', 2: 'height', 3: 'width'}),
											    ] )




				@property
				def 					a							(      self ):
											return 1e-4




