





'''simple docstring'''

from typing import Optional, Union

import torch
from torch import nn

from ...configuration_utils import ConfigMixin, register_to_config
from ...models.modeling_utils import ModelMixin







class __a			( _snake_case, _snake_case      ):





   @register_to_config
   def __init__(       self					:      Optional[Any]					,lowerCamelCase					:      int = 768					,):

      '''simple docstring'''

      super().__init__()

      __SCREAMING_SNAKE_CASE   				=							nn.Parameter(torch.zeros(1					,lowerCamelCase     )     )
      __SCREAMING_SNAKE_CASE   				=							nn.Parameter(torch.ones(1					,lowerCamelCase     )     )





   def   UpperCAmelCase__  (       self					:      List[str]					,lowerCamelCase					:      Optional[Union[str, torch.device]] = None					,lowerCamelCase					:      Optional[torch.dtype] = None					,):

      '''simple docstring'''

      __SCREAMING_SNAKE_CASE   				=							nn.Parameter(self.mean.to(lowerCamelCase     ).to(lowerCamelCase     )     )
      __SCREAMING_SNAKE_CASE   				=							nn.Parameter(self.std.to(lowerCamelCase     ).to(lowerCamelCase     )     )
      return self





   def   UpperCAmelCase__  (       self					:      Tuple					,lowerCamelCase					:      Tuple     ):

      '''simple docstring'''

      __SCREAMING_SNAKE_CASE   				=							(embeds - self.mean) * 1.0 / self.std
      return embeds





   def   UpperCAmelCase__  (       self					:      int					,lowerCamelCase					:      List[str]     ):

      '''simple docstring'''

      __SCREAMING_SNAKE_CASE   				=							(embeds * self.std) + self.mean
      return embeds









from typing import List

from ...configuration_utils import PretrainedConfig
from ...utils import logging


_lowercase							:   Any						=						logging.get_logger(__name__)

_lowercase							:   Union[str, Any]						=						{
    "snap-research/efficientformer-l1-300": (
        "https://huggingface.co/snap-research/efficientformer-l1-300/resolve/main/config.json"
    ),
}






class    _UpperCamelCase     (       __snake_case					):

				"""simple docstring"""







				lowerCAmelCase					=			'efficientformer'

				def __init__(    self					, a__ = [3, 2, 6, 4]					, a__ = [48, 96, 224, 448]					, a__ = [True, True, True, True]					, a__ = 448					, a__ = 32					, a__ = 4					, a__ = 7					, a__ = 5					, a__ = 8					, a__ = 4					, a__ = 0.0					, a__ = 16					, a__ = 3					, a__ = 3					, a__ = 3					, a__ = 2					, a__ = 1					, a__ = 0.0					, a__ = 1					, a__ = True					, a__ = True					, a__ = 1e-5					, a__ = "gelu"					, a__ = 0.02					, a__ = 1e-12					, a__ = 224					, a__ = 1e-05					, **a__					, )						->					None:
					super().__init__(**a__ )

					A             =					hidden_act
					A             =					hidden_dropout_prob
					A             =					hidden_sizes
					A             =					num_hidden_layers
					A             =					num_attention_heads
					A             =					initializer_range
					A             =					layer_norm_eps
					A             =					patch_size
					A             =					num_channels
					A             =					depths
					A             =					mlp_expansion_ratio
					A             =					downsamples
					A             =					dim
					A             =					key_dim
					A             =					attention_ratio
					A             =					resolution
					A             =					pool_size
					A             =					downsample_patch_size
					A             =					downsample_stride
					A             =					downsample_pad
					A             =					drop_path_rate
					A             =					num_metaad_blocks
					A             =					distillation
					A             =					use_layer_scale
					A             =					layer_scale_init_value
					A             =					image_size
					A             =					batch_norm_eps



