





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
from ...utils.backbone_utils import BackboneConfigMixin, get_aligned_output_features_output_indices


__A       : Tuple						    = logging.get_logger(__name__)

__A       : List[str]						    = {
    "facebook/convnext-tiny-224": "https://huggingface.co/facebook/convnext-tiny-224/resolve/main/config.json",
    # See all ConvNeXT models at https://huggingface.co/models?filter=convnext
}







class     lowerCamelCase(	__snake_case ,   __snake_case  ):
     '''simple docstring'''


     __magic_name__        = 'convnext'




     def __init__(						self							,    snake_case_=3							,    snake_case_=4							,    snake_case_=4							,    snake_case_=None							,    snake_case_=None							,    snake_case_="gelu"							,    snake_case_=0.02							,    snake_case_=1E-12							,    snake_case_=1E-6							,    snake_case_=0.0							,    snake_case_=224							,    snake_case_=None							,    snake_case_=None							,    **snake_case_							,    ):
         super().__init__(**snake_case_       )

         _A    =       num_channels
         _A    =       patch_size
         _A    =       num_stages
         _A    =       [96, 192, 384, 768] if hidden_sizes is None else hidden_sizes
         _A    =       [3, 3, 9, 3] if depths is None else depths
         _A    =       hidden_act
         _A    =       initializer_range
         _A    =       layer_norm_eps
         _A    =       layer_scale_init_value
         _A    =       drop_path_rate
         _A    =       image_size
         _A    =       ['stem'] + [F"stage{idx}" for idx in range(1							,    len(self.depths       ) + 1       )]
         _A, _A    =       get_aligned_output_features_output_indices(
             out_features=snake_case_							,    out_indices=snake_case_							,    stage_names=self.stage_names       )







class     lowerCamelCase(	__snake_case  ):
     '''simple docstring'''


     __magic_name__        = version.parse('1.11'  )




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




     @property
     def 					lowerCAmelCase__		(						self       ):
         return 1E-5












from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


__A       : Dict						    = {"configuration_hubert": ["HUBERT_PRETRAINED_CONFIG_ARCHIVE_MAP", "HubertConfig"]}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 __A       : List[str]						    = [
     "HUBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "HubertForCTC",
     "HubertForSequenceClassification",
     "HubertModel",
     "HubertPreTrainedModel",
 ]


try:
 if not is_tf_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 __A       : Tuple						    = [
     "TF_HUBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "TFHubertForCTC",
     "TFHubertModel",
     "TFHubertPreTrainedModel",
 ]

if TYPE_CHECKING:
 from .configuration_hubert import HUBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, HubertConfig

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_hubert import (
      HUBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      HubertForCTC,
      HubertForSequenceClassification,
      HubertModel,
      HubertPreTrainedModel,
  )

 try:
  if not is_tf_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_tf_hubert import (
      TF_HUBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      TFHubertForCTC,
      TFHubertModel,
      TFHubertPreTrainedModel,
  )


else:
 import sys

 __A       : Dict						    = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





