



"""simple docstring"""







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


__snake_case						:					Any	       =      logging.get_logger(__name__)

__snake_case						:					int	       =      {
    """microsoft/swin-tiny-patch4-window7-224""": (
        """https://huggingface.co/microsoft/swin-tiny-patch4-window7-224/resolve/main/config.json"""
    ),
    # See all Swin models at https://huggingface.co/models?filter=swin
}

class    UpperCamelCase	(       __SCREAMING_SNAKE_CASE   ,			__SCREAMING_SNAKE_CASE					):





     """simple docstring"""






     _lowerCamelCase       :			Optional[int]					 ="""swin"""

     _lowerCamelCase       :			List[Any]					 ={
         """num_attention_heads""": """num_heads""",
         """num_hidden_layers""": """num_layers""",
     }





     def __init__(       self			:				str						,   _lowerCamelCase			:				Union[str, Any]=2_2_4						,   _lowerCamelCase			:				str=4						,   _lowerCamelCase			:				Any=3						,   _lowerCamelCase			:				Dict=9_6						,   _lowerCamelCase			:				List[Any]=[2, 2, 6, 2]						,   _lowerCamelCase			:				Tuple=[3, 6, 1_2, 2_4]						,   _lowerCamelCase			:				Optional[int]=7						,   _lowerCamelCase			:				Any=4.0						,   _lowerCamelCase			:				Union[str, Any]=True						,   _lowerCamelCase			:				Any=0.0						,   _lowerCamelCase			:				Any=0.0						,   _lowerCamelCase			:				Optional[int]=0.1						,   _lowerCamelCase			:				Tuple="gelu"						,   _lowerCamelCase			:				Optional[int]=False						,   _lowerCamelCase			:				List[str]=0.02						,   _lowerCamelCase			:				Optional[Any]=1E-5						,   _lowerCamelCase			:				Optional[int]=3_2						,   _lowerCamelCase			:				Optional[int]=None						,   _lowerCamelCase			:				Tuple=None						,   **_lowerCamelCase			:				Optional[Any]						,   ):
          super().__init__(**A_			)

          A__      						= image_size
          A__      						= patch_size
          A__      						= num_channels
          A__      						= embed_dim
          A__      						= depths
          A__      						= len(A_			)
          A__      						= num_heads
          A__      						= window_size
          A__      						= mlp_ratio
          A__      						= qkv_bias
          A__      						= hidden_dropout_prob
          A__      						= attention_probs_dropout_prob
          A__      						= drop_path_rate
          A__      						= hidden_act
          A__      						= use_absolute_embeddings
          A__      						= layer_norm_eps
          A__      						= initializer_range
          A__      						= encoder_stride
          # we set the hidden_size attribute in order to make Swin work with VisionEncoderDecoderModel
          # this indicates the channel dimension after the last stage of the model
          A__      						= int(embed_dim * 2 ** (len(A_			) - 1)			)
          A__      						= ['''stem'''] + [F'''stage{idx}''' for idx in range(1						,   len(A_			) + 1			)]
          A__						,  A__      						= get_aligned_output_features_output_indices(
              out_features=A_						,   out_indices=A_						,   stage_names=self.stage_names			)


class    UpperCamelCase	(       __SCREAMING_SNAKE_CASE					):





     """simple docstring"""






     _lowerCamelCase       :			int					 =version.parse("1.11"					)





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





     @property
     def     A__	(       self			:				Dict			):
          return 1E-4










from ..utils import (
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_scipy_available,
    is_torch_available,
    is_torchsde_available,
)


try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_pt_objects import *  # noqa F403
else:
  from .scheduling_consistency_models import CMStochasticIterativeScheduler
  from .scheduling_ddim import DDIMScheduler
  from .scheduling_ddim_inverse import DDIMInverseScheduler
  from .scheduling_ddim_parallel import DDIMParallelScheduler
  from .scheduling_ddpm import DDPMScheduler
  from .scheduling_ddpm_parallel import DDPMParallelScheduler
  from .scheduling_deis_multistep import DEISMultistepScheduler
  from .scheduling_dpmsolver_multistep import DPMSolverMultistepScheduler
  from .scheduling_dpmsolver_multistep_inverse import DPMSolverMultistepInverseScheduler
  from .scheduling_dpmsolver_singlestep import DPMSolverSinglestepScheduler
  from .scheduling_euler_ancestral_discrete import EulerAncestralDiscreteScheduler
  from .scheduling_euler_discrete import EulerDiscreteScheduler
  from .scheduling_heun_discrete import HeunDiscreteScheduler
  from .scheduling_ipndm import IPNDMScheduler
  from .scheduling_k_dpm_2_ancestral_discrete import KDPMaAncestralDiscreteScheduler
  from .scheduling_k_dpm_2_discrete import KDPMaDiscreteScheduler
  from .scheduling_karras_ve import KarrasVeScheduler
  from .scheduling_pndm import PNDMScheduler
  from .scheduling_repaint import RePaintScheduler
  from .scheduling_sde_ve import ScoreSdeVeScheduler
  from .scheduling_sde_vp import ScoreSdeVpScheduler
  from .scheduling_unclip import UnCLIPScheduler
  from .scheduling_unipc_multistep import UniPCMultistepScheduler
  from .scheduling_utils import KarrasDiffusionSchedulers, SchedulerMixin
  from .scheduling_vq_diffusion import VQDiffusionScheduler

try:
  if not is_flax_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_flax_objects import *  # noqa F403
else:
  from .scheduling_ddim_flax import FlaxDDIMScheduler
  from .scheduling_ddpm_flax import FlaxDDPMScheduler
  from .scheduling_dpmsolver_multistep_flax import FlaxDPMSolverMultistepScheduler
  from .scheduling_karras_ve_flax import FlaxKarrasVeScheduler
  from .scheduling_lms_discrete_flax import FlaxLMSDiscreteScheduler
  from .scheduling_pndm_flax import FlaxPNDMScheduler
  from .scheduling_sde_ve_flax import FlaxScoreSdeVeScheduler
  from .scheduling_utils_flax import (
      FlaxKarrasDiffusionSchedulers,
      FlaxSchedulerMixin,
      FlaxSchedulerOutput,
      broadcast_to_shape_from_left,
  )


try:
  if not (is_torch_available() and is_scipy_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_torch_and_scipy_objects import *  # noqa F403
else:
  from .scheduling_lms_discrete import LMSDiscreteScheduler

try:
  if not (is_torch_available() and is_torchsde_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_torch_and_torchsde_objects import *  # noqa F403
else:
  from .scheduling_dpmsolver_sde import DPMSolverSDEScheduler
