+
     °³jn}  ã                   ó  € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	H
t
 ^ RIt^ RIt^ RIHu Ht ^ RIHtHt ^ RIHtHtHt ^ RIHt ^ R	IHtHt ^ R
IHtHt ^ RIH t  ^ RI!H"t"H#t# ^ RI$H%t% . R1Ot&R R lt'R R lt(R R lt) ! R R]PT                  4      t+ ! R R]PT                  4      t, ! R R]PT                  4      t- ! R R]PT                  4      t. ! R R]PT                  4      t/ ! R  R!]PT                  4      t0 ! R" R#]PT                  4      t1 ! R$ R%]PT                  4      t2 ! R& R]PT                  4      t3R2R' R( llt4 ! R) R]4      t5]! 4       ]! R*]5Pl                  3R+7      R,RR-R./R/ R0 ll4       4       t7R# )3é    N)ÚOrderedDict)ÚSequence)Úpartial)ÚAnyÚCallableÚOptional)ÚnnÚTensor)Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚConv2dNormActivationÚSqueezeExcitation)ÚStochasticDepth)ÚImageClassificationÚInterpolationMode)Ú_log_api_usage_onceÚMaxVitÚMaxVit_T_Weightsc                ó˜   € V ^8„  d   QhR\         \        \        3,          R\        R\        R\        R\         \        \        3,          /# )é   Ú
input_sizeÚkernel_sizeÚstrideÚpaddingÚreturn)ÚtupleÚint)Úformats   "ÚZ/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchvision/models/maxvit.pyÚ__annotate__r$      sF   € ÷ ñ ¤u¬S´#¨X¥ð ÄSð ÔRUð Ô`cð ÔhmÔnqÔsvÐnvÕhwñ ó    c                 ó²   € V ^ ,          V,
          ^V,          ,           V,          ^,           V ^,          V,
          ^V,          ,           V,          ^,           3# )r   © )r   r   r   r   s   &&&&r#   Ú_get_conv_output_shaper(      sJ   € à	�A�˜Õ	$ q¨7¥{Õ	2°vÕ=ÀÕAØ	�A�˜Õ	$ q¨7¥{Õ	2°vÕ=ÀÕAðð r%   c          	      ó–   € V ^8„  d   QhR\         \        \        3,          R\        R\        \         \        \        3,          ,          /# )r   r   Ún_blocksr   )r    r!   Úlist)r"   s   "r#   r$   r$   !   s;   € ÷ ñ ¬¬s´C¨x­ð ÄCð ÌDÔQVÔWZÔ\_ÐW_ÕQ`ÕLañ r%   c                óˆ   € . p\        V ^^^4      p\        V4       F"  p\        V^^^4      pVP                  V4       K$  	  V# )zQUtil function to check that the input size is correct for a MaxVit configuration.)r(   ÚrangeÚappend)r   r*   ÚshapesÚblock_input_shapeÚ_s   &&   r#   Ú_make_block_input_shapesr2   !   sL   € à€FÜ.¨z¸1¸aÀÓCÐÜ�8Ž_ˆÜ2Ð3DÀaÈÈAÓNÐØ�‰Ð'Ö(ñ ð €Mr%   c                óP   € V ^8„  d   QhR\         R\         R\        P                  /# )r   ÚheightÚwidthr   )r!   Útorchr
   )r"   s   "r#   r$   r$   +   s%   € ÷ #ñ #¬ð #´Sð #¼U¿\¹\ñ #r%   c                 ó$  € \         P                  ! \         P                  ! \         P                  ! V 4      \         P                  ! V4      .R R7      4      p\         P                  ! V^4      pVR,          VR,          ,
          pVP                  ^^^ 4      P                  4       pVR;;,          V ^,
          ,          uu&   VR;;,          V^,
          ,          uu&   VR;;,          ^V,          ^,
          ,          uu&   VP                  R4      # )Úij)Úindexing)ºNNNr:   N)r:   Nr:   )r:   r:   r   )r:   r:   é   éÿÿÿÿ)r6   ÚstackÚmeshgridÚarangeÚflattenÚpermuteÚ
contiguousÚsum)r4   r5   ÚcoordsÚcoords_flatÚrelative_coordss   &&   r#   Ú_get_relative_position_indexrG   +   sÅ   € Ü�[Š[œŸš¬¯ª°fÓ)=¼u¿|º|ÈEÓ?RÐ(SÐ^bÔcÓd€FÜ—-’- ¨Ó*€KØ! *Õ-°¸JÕ0GÕG€OØ%×-Ñ-¨a°°AÓ6×AÑAÓC€OØ�G× ¨¥
Õ*ÓØ�G× ¨¥	Õ)ÓØ�G×  E¥	¨A¥Õ-ÓØ×Ñ˜rÓ"Ð"r%   c                   óX   a a€ ] tR t^6t oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )ÚMBConva  MBConv: Mobile Inverted Residual Bottleneck.

Args:
    in_channels (int): Number of input channels.
    out_channels (int): Number of output channels.
    expansion_ratio (float): Expansion ratio in the bottleneck.
    squeeze_ratio (float): Squeeze ratio in the SE Layer.
    stride (int): Stride of the depthwise convolution.
    activation_layer (Callable[..., nn.Module]): Activation function.
    norm_layer (Callable[..., nn.Module]): Normalization function.
    p_stochastic_dropout (float): Probability of stochastic depth.
c                óž   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[ RS[RS[P                  3,          RS[RS[P                  3,          R	S[R
R/	# )r   Úin_channelsÚout_channelsÚexpansion_ratioÚsqueeze_ratior   Úactivation_layer.Ú
norm_layerÚp_stochastic_dropoutr   N)r!   Úfloatr   r	   ÚModule)r"   Ú__classdict__s   "€r#   r$   ÚMBConv.__annotate__D   s   ø€ ÷ ;-ñ ;-áð;-ñ ð;-ñ ð	;-ñ
 ð;-ñ ð;-ñ # 3©¯	©	 >Õ2ð;-ñ ˜S¡"§)¡)˜^Õ,ð;-ñ $ð;-ð 
ñ;-r%   c	                ó$  <€ \         SV `  4        V  V^8g  ;'       g    W8g  p	V	'       d^   \        P                  ! W^^RR7      .p
V^8X  d"   \        P                  ! ^V^R7      .V
,           p
\        P
                  ! V
!  V n        M\        P                  ! 4       V n        \        W#,          4      p\        W$,          4      pV'       d   \        VRR7      V n
        M\        P                  ! 4       V n
        \        4       pV! V4      VR&   \        VV^^^ VVRR7      VR	&   \        VV^V^VVVRR
7	      VR&   \        W¼\        P                  R7      VR&   \        P                  ! W²^RR7      VR&   \        P
                  ! V4      V n        R# )r;   T)r   r   Úbias©r   r   r   Úrow©ÚmodeÚpre_normN)r   r   r   rO   rP   ÚinplaceÚconv_a)r   r   r   rO   rP   Úgroupsr]   Úconv_b)Ú
activationÚsqueeze_excitation)rK   rL   r   rW   Úconv_c)ÚsuperÚ__init__r	   ÚConv2dÚ	AvgPool2dÚ
SequentialÚprojÚIdentityr!   r   Ústochastic_depthr   r   r   ÚSiLUÚlayers)ÚselfrK   rL   rM   rN   r   rO   rP   rQ   Úshould_projri   Úmid_channelsÚsqz_channelsÚ_layersÚ	__class__s   &&&&&&&&&     €r#   re   ÚMBConv.__init__D   sk  ø€ ô 	‰ÑÔñ 	à ‘k×@Ð@ [Ñ%@ˆßÜ—I’I˜kÀQÈqÐW[Ô\Ð]ˆDØ˜Œ{ÜŸš°¸6È1ÔMÐNÐQUÕU�ÜŸš tÑ,ˆD�IäŸš›ˆDŒIä˜<Õ9Ó:ˆÜ˜<Õ7Ó8ˆçÜ$3Ð4HÈuÔ$UˆDÕ!ä$&§K¢K£MˆDÔ!ä“-ˆÙ(¨Ó5ˆ�
ÑÜ0ØØØØØØ-Ø!Øô	
ˆ�Ñô 1ØØØØØØ-Ø!ØØô

ˆ�Ñô ):¸,Ôac×ahÑahÔ(iˆÐ$Ñ%ÜŸIšI°,ÐghÐosÔtˆ�Ñä—m’m GÓ,ˆŽr%   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r   Úxr   ©r
   )r"   rT   s   "€r#   r$   rU   �   s   ø€ ÷ 	ñ 	™ð 	¡Fñ 	r%   c                ót   € V P                  V4      pV P                  V P                  V4      4      pW!,           # )z¥
Args:
    x (Tensor): Input tensor with expected layout of [B, C, H, W].
Returns:
    Tensor: Output tensor with expected layout of [B, C, H / stride, W / stride].
)ri   rk   rm   ©rn   rw   Úress   && r#   ÚforwardÚMBConv.forward�   s0   € ð �i‰i˜‹lˆØ×!Ñ! $§+¡+¨a£.Ó1ˆØ�wˆr%   )rm   ri   rk   )ç        ©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__re   r|   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rs   rT   s   @@r#   rI   rI   6   s$   ù‡ € ñ÷;-õ ;-÷z	÷ 	ð 	r%   rI   c                   óf   a a€ ] tR t^�t oRtV3R lV 3R lltV3R lR ltV3R lR ltRtVt	V ;t
# )	Ú$RelativePositionalMultiHeadAttentionzÀRelative Positional Multi-Head Attention.

Args:
    feat_dim (int): Number of input features.
    head_dim (int): Number of features per head.
    max_seq_len (int): Maximum sequence length.
c                ó0   <€ V ^8„  d   QhRS[ RS[ RS[ RR/# )r   Úfeat_dimÚhead_dimÚmax_seq_lenr   N©r!   )r"   rT   s   "€r#   r$   Ú1RelativePositionalMultiHeadAttention.__annotate__–   s9   ø€ ÷ Qñ QáðQñ ðQñ ð	Qð
 
ñQr%   c                ó¾  <€ \         SV `  4        W,          ^ 8w  d   \        RV RV 24      hW,          V n        W n        \        \        P                  ! V4      4      V n        W0n	        \        P                  ! WP                  V P                  ,          ^,          4      V n        VR,          V n        \        P                  ! V P                  V P                  ,          V4      V n        \        P                  P!                  \"        P$                  ! ^V P                  ,          ^,
          ^V P                  ,          ^,
          ,          V P                  3\"        P&                  R7      4      V n        V P+                  R\-        V P                  V P                  4      4       \"        P                  P.                  P1                  V P(                  RR7       R# )	r   z
feat_dim: z  must be divisible by head_dim: )ÚdtypeÚrelative_position_indexç{®Gáz”?©ÚstdNg      à¿)rd   re   Ú
ValueErrorÚn_headsr�   r!   ÚmathÚsqrtÚsizerŽ   r	   ÚLinearÚto_qkvÚscale_factorÚmergeÚ	parameterÚ	Parameterr6   ÚemptyÚfloat32Úrelative_position_bias_tableÚregister_bufferrG   ÚinitÚtrunc_normal_)rn   rŒ   r�   rŽ   rs   s   &&&&€r#   re   Ú-RelativePositionalMultiHeadAttention.__init__–   sK  ø€ ô 	‰ÑÔàÕ !Ô#Ü˜z¨(¨Ð3SÐT\ÐS]Ð^Ó_Ð_àÕ+ˆŒØ ŒÜœŸ	š	 +Ó.Ó/ˆŒ	Ø&Ôä—i’i ¯,©,¸¿¹Õ*FÈÕ*JÓKˆŒØ$ d�NˆÔä—Y’Y˜tŸ}™}¨t¯|©|Õ;¸XÓFˆŒ
Ü,.¯L©L×,BÑ,BÜ�KŠK˜!˜dŸi™i�-¨!Õ+°°D·I±IµÀÕ0AÕBÀDÇLÁLÐQÔY^×YfÑYfÔgó-
ˆÔ)ð 	×ÑÐ6Ô8TÐUY×U^ÑU^Ð`d×`iÑ`iÓ8jÔkä�‰�‰×#Ñ# D×$EÑ$EÈ4Ð#ÖPr%   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r   ©r6   r
   )r"   rT   s   "€r#   r$   r�   ²   s   ø€ ÷ *ñ *©e¯l©lñ *r%   c                ó  € V P                   P                  R4      pV P                  V,          P                  V P                  V P                  R4      pVP	                  ^^ ^4      P                  4       pVP                  ^ 4      # )r;   r<   )r“   Úviewr¤   rŽ   rA   rB   Ú	unsqueeze)rn   Ú
bias_indexÚrelative_biass   &  r#   Úget_relative_positional_biasÚARelativePositionalMultiHeadAttention.get_relative_positional_bias²   ss   € Ø×1Ñ1×6Ñ6°rÓ:ˆ
Ø×9Ñ9¸*ÕE×JÑJÈ4×K[ÑK[Ð]a×]mÑ]mÐoqÓrˆØ%×-Ñ-¨a°°AÓ6×AÑAÓCˆØ×&Ñ& qÓ)Ð)r%   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rv   rx   )r"   rT   s   "€r#   r$   r�   ¸   s   ø€ ÷ ñ ™ð ¡Fñ r%   c                óØ  € VP                   w  r#rEV P                  V P                  rvV P                  V4      p\        P
                  ! V^RR7      w  ršpV	P                  W#WFV4      P                  ^ ^^^^4      p	V
P                  W#WFV4      P                  ^ ^^^^4      p
VP                  W#WFV4      P                  ^ ^^^^4      pW P                  ,          p
\        P                  ! RWš4      pV P                  4       p\        P                  ! WÍ,           RR7      p\        P                  ! RWË4      pVP                  ^ ^^^^4      P                  W#WE4      pV P                  V4      pV# )z“
Args:
    x (Tensor): Input tensor with expected layout of [B, G, P, D].
Returns:
    Tensor: Output tensor with expected layout of [B, G, P, D].
)Údimz!B G H I D, B G H J D -> B G H I Jz!B G H I J, B G H J D -> B G H I Dr<   )Úshaper˜   r�   r�   r6   ÚchunkÚreshaperA   rž   Úeinsumr°   ÚFÚsoftmaxrŸ   )rn   rw   ÚBÚGÚPÚDÚHÚDHÚqkvÚqÚkÚvÚdot_prodÚpos_biasÚouts   &&             r#   r|   Ú,RelativePositionalMultiHeadAttention.forward¸   s8  € ð —W‘W‰
ˆˆaØ—‘˜dŸm™mˆ2à�k‰k˜!‹nˆÜ—+’+˜c 1¨"Ô-‰ˆˆaà�I‰I�a˜A "Ó%×-Ñ-¨a°°A°q¸!Ó<ˆØ�I‰I�a˜A "Ó%×-Ñ-¨a°°A°q¸!Ó<ˆØ�I‰I�a˜A "Ó%×-Ñ-¨a°°A°q¸!Ó<ˆà×!Ñ!Õ!ˆÜ—<’<Ð CÀQÓJˆØ×4Ñ4Ó6ˆä—9’9˜XÕ0°bÔ9ˆä�lŠlÐ>ÀÓLˆØ�k‰k˜!˜Q  1 aÓ(×0Ñ0°°qÓ<ˆà�j‰j˜‹oˆØˆ
r%   )r�   rŽ   rŸ   r˜   r¤   rž   r›   r�   )r€   r�   r‚   rƒ   r„   re   r°   r|   r…   r†   r‡   rˆ   s   @@r#   rŠ   rŠ   �   s/   ù‡ € ñ÷Qó Q÷8*ð *÷÷ ð r%   rŠ   c                   óT   a a€ ] tR t^Öt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚSwapAxeszPermute the axes of a tensor.c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   ÚaÚbr   Nr�   )r"   rT   s   "€r#   r$   ÚSwapAxes.__annotate__Ù   s"   ø€ ÷ ñ ™#ð ¡#ð ¨$ñ r%   c                ó<   <€ \         SV `  4        Wn        W n        R # ©N)rd   re   rÌ   rÍ   )rn   rÌ   rÍ   rs   s   &&&€r#   re   ÚSwapAxes.__init__Ù   s   ø€ Ü‰ÑÔØŒØŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rv   rª   )r"   rT   s   "€r#   r$   rÎ   Þ   s#   ø€ ÷ ñ ™Ÿ™ð ©%¯,©,ñ r%   c                ó\   € \         P                  ! WP                  V P                  4      pV# rÐ   )r6   ÚswapaxesrÌ   rÍ   rz   s   && r#   r|   ÚSwapAxes.forwardÞ   s   € Ü�nŠn˜Q§¡¨¯©Ó/ˆØˆ
r%   )rÌ   rÍ   r   rˆ   s   @@r#   rÊ   rÊ   Ö   s!   ù‡ € Ù'÷ó ÷
÷ ð r%   rÊ   c                   óT   a a€ ] tR t^ãt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚWindowPartitionz:
Partition the input tensor into non-overlapping windows.
c                ó   <€ V ^8„  d   QhRR/# ©r   r   Nr'   )r"   rT   s   "€r#   r$   ÚWindowPartition.__annotate__è   ó   ø€ ÷ ñ ˜$ñ r%   c                ó$   <€ \         SV `  4        R # rÐ   ©rd   re   ©rn   rs   s   &€r#   re   ÚWindowPartition.__init__è   ó   ø€ Ü‰ÑÖr%   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# )r   rw   Úpr   ©r
   r!   )r"   rT   s   "€r#   r$   rÚ   ë   s"   ø€ ÷ ñ ™ð ¡Cð ©Fñ r%   c                óð   € VP                   w  r4rVTpVP                  W4WW,          WvV,          V4      pVP                  ^ ^^^^^4      pVP                  W5V,          Wg,          ,          Ww,          V4      pV# )z¿
Args:
    x (Tensor): Input tensor with expected layout of [B, C, H, W].
    p (int): Number of partitions.
Returns:
    Tensor: Output tensor with expected layout of [B, H/P, W/P, P*P, C].
©rµ   r·   rA   )rn   rw   râ   r»   ÚCr¿   ÚWr½   s   &&&     r#   r|   ÚWindowPartition.forwardë   sl   € ð —W‘W‰
ˆˆaØˆà�I‰I�a˜A�F A¨A¥v¨qÓ1ˆØ�I‰I�a˜˜A˜q ! QÓ'ˆà�I‰I�a˜q�& Q¥VÕ,¨a­e°QÓ7ˆØˆr%   r'   r   rˆ   s   @@r#   r×   r×   ã   s#   ù‡ € ñ÷ó ÷÷ ð r%   r×   c                   óT   a a€ ] tR t^ýt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚWindowDepartitionzg
Departition the input tensor of non-overlapping windows into a feature volume of layout [B, C, H, W].
c                ó   <€ V ^8„  d   QhRR/# rÙ   r'   )r"   rT   s   "€r#   r$   ÚWindowDepartition.__annotate__  rÛ   r%   c                ó$   <€ \         SV `  4        R # rÐ   rÝ   rÞ   s   &€r#   re   ÚWindowDepartition.__init__  rà   r%   c          
      ó8   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[ /# )r   rw   râ   Úh_partitionsÚw_partitionsr   rã   )r"   rT   s   "€r#   r$   rì     s1   ø€ ÷ ñ ™ð ¡Cð ±sð É#ð ÑRXñ r%   c                ó¼   € VP                   w  rVrxTp	Y4rºVP                  WZW¹W˜4      pVP                  ^ ^^^^^4      pVP                  WXW©,          W¹,          4      pV# )a2  
Args:
    x (Tensor): Input tensor with expected layout of [B, (H/P * W/P), P*P, C].
    p (int): Number of partitions.
    h_partitions (int): Number of vertical partitions.
    w_partitions (int): Number of horizontal partitions.
Returns:
    Tensor: Output tensor with expected layout of [B, C, H, W].
rå   )rn   rw   râ   rð   rñ   r»   r¼   ÚPPræ   r½   ÚHPÚWPs   &&&&&       r#   r|   ÚWindowDepartition.forward  s`   € ð —g‘g‰ˆˆbØˆØˆBà�I‰I�a˜R AÓ)ˆà�I‰I�a˜˜A˜q ! QÓ'ˆà�I‰I�a˜B�F B¥FÓ+ˆØˆr%   r'   r   rˆ   s   @@r#   rê   rê   ý   s#   ù‡ € ñ÷ó ÷÷ ð r%   rê   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚPartitionAttentionLayeri  av  
Layer for partitioning the input tensor into non-overlapping windows and applying attention to each window.

Args:
    in_channels (int): Number of input channels.
    head_dim (int): Dimension of each attention head.
    partition_size (int): Size of the partitions.
    partition_type (str): Type of partitioning to use. Can be either "grid" or "window".
    grid_size (Tuple[int, int]): Size of the grid to partition the input tensor into.
    mlp_ratio (int): Ratio of the  feature size expansion in the MLP layer.
    activation_layer (Callable[..., nn.Module]): Activation function to use.
    norm_layer (Callable[..., nn.Module]): Normalization function to use.
    attention_dropout (float): Dropout probability for the attention layer.
    mlp_dropout (float): Dropout probability for the MLP layer.
    p_stochastic_dropout (float): Probability of dropping out a partition.
c                óÆ   <€ V ^8„  d   QhRS[ RS[ RS[ RS[RS[S[ S[ 3,          RS[ RS[RS[P
                  3,          R	S[RS[P
                  3,          R
S[RS[RS[RR/# )r   rK   r�   Úpartition_sizeÚpartition_typeÚ	grid_sizeÚ	mlp_ratiorO   .rP   Úattention_dropoutÚmlp_dropoutrQ   r   N)r!   Ústrr    r   r	   rS   rR   )r"   rT   s   "€r#   r$   Ú$PartitionAttentionLayer.__annotate__-  s³   ø€ ÷ 8Tñ 8Táð8Tñ ð8Tñ
 ð8Tñ ð8Tñ ™™c˜•?ð8Tñ ð8Tñ # 3©¯	©	 >Õ2ð8Tñ ˜S¡"§)¡)˜^Õ,ð8Tñ !ð8Tñ ð8Tñ $ð8Tð  
ñ!8Tr%   c           	     óÊ  <€ \         SV `  4        W,          V n        W n        V^ ,          V,          V n        W@n        WPn        VR9  d   \        R4      hVR8X  d   W0P                  uV n        V n	        MV P                  VuV n        V n	        \        4       V n        \        4       V n        VR8X  d   \        RR	4      M\        P                   ! 4       V n        VR8X  d   \        RR	4      M\        P                   ! 4       V n        \        P&                  ! V! V4      \)        WV^,          4      \        P*                  ! V	4      4      V n        \        P&                  ! \        P.                  ! V4      \        P0                  ! WV,          4      V! 4       \        P0                  ! W,          V4      \        P*                  ! V
4      4      V n        \5        VRR7      V n        R# )
r   ÚgridÚwindowz0partition_type must be either 'grid' or 'window'rY   rZ   N)r  r  éþÿÿÿéýÿÿÿ)rd   re   r˜   r�   Ún_partitionsrû   rü   r—   râ   Úgr×   Úpartition_oprê   Údepartition_oprÊ   r	   rj   Úpartition_swapÚdepartition_swaprh   rŠ   ÚDropoutÚ
attn_layerÚ	LayerNormrœ   Ú	mlp_layerr   Ústochastic_dropout)rn   rK   r�   rú   rû   rü   rý   rO   rP   rþ   rÿ   rQ   rs   s   &&&&&&&&&&&&€r#   re   Ú PartitionAttentionLayer.__init__-  su  ø€ ô" 	‰ÑÔà"Õ.ˆŒØ ŒØ% a�L¨NÕ:ˆÔØ,ÔØ"ŒàÐ!3Ô3ÜÐOÓPÐPà˜XÔ%Ø+×->Ñ->ˆNˆDŒF�D•Fà!×.Ñ.°ˆNˆDŒF�D”Fä+Ó-ˆÔÜ/Ó1ˆÔØ2@ÀFÔ2Jœh r¨2Ô.ÔPR×P[ÒP[ÓP]ˆÔØ4BÀfÔ4L¤¨¨RÔ 0ÔRT×R]ÒR]ÓR_ˆÔäŸ-š-Ù�{Ó#ô 1°ÈÐXYÕHYÓZÜ�JŠJÐ(Ó)ó
ˆŒô ŸšÜ�LŠL˜Ó%Ü�IŠI�k°Õ#:Ó;ÙÓÜ�IŠI�kÕ-¨{Ó;Ü�JŠJ�{Ó#ó
ˆŒô #2Ð2FÈUÔ"SˆÖr%   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rv   rx   )r"   rT   s   "€r#   r$   r  g  s   ø€ ÷ ñ ™ð ¡Fñ r%   c                óü  € V P                   ^ ,          V P                  ,          V P                   ^,          V P                  ,          r2\        P                  ! V P                   ^ ,          V P                  ,          ^ 8H  ;'       d(    V P                   ^,          V P                  ,          ^ 8H  RP	                  V P                   V P                  4      4       V P                  WP                  4      pV P                  V4      pWP                  V P                  V4      4      ,           pWP                  V P                  V4      4      ,           pV P                  V4      pV P                  WP                  W#4      pV# )z“
Args:
    x (Tensor): Input tensor with expected layout of [B, C, H, W].
Returns:
    Tensor: Output tensor with expected layout of [B, C, H, W].
z[Grid size must be divisible by partition size. Got grid size of {} and partition size of {})rü   râ   r6   Ú_assertr"   r	  r  r  r  r  r  r
  )rn   rw   ÚghÚgws   &&  r#   r|   ÚPartitionAttentionLayer.forwardg  s  € ð —‘ Õ" d§f¡fÕ,¨d¯n©n¸QÕ.?À4Ç6Á6Õ.IˆBÜ�ŠØ�N‰N˜1Õ §¡Õ&¨!Ñ+×OÐO°·±¸qÕ0AÀDÇFÁFÕ0JÈaÑ0OØi×pÑpØ—‘ §¡óô	
ð ×Ñ˜a§¡Ó(ˆØ×Ñ Ó"ˆØ×'Ñ'¨¯©¸Ó(:Ó;Õ;ˆØ×'Ñ'¨¯©°qÓ(9Ó:Õ:ˆØ×!Ñ! !Ó$ˆØ×Ñ §6¡6¨2Ó2ˆàˆr%   )r  r
  r  r  rü   r�   r  r˜   r  râ   r	  r  rû   r  r   rˆ   s   @@r#   rø   rø     s&   ù‡ € ñ÷"8Tó 8T÷t÷ ð r%   rø   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚMaxVitLayeriƒ  aÔ  
MaxVit layer consisting of a MBConv layer followed by a PartitionAttentionLayer with `window` and a PartitionAttentionLayer with `grid`.

Args:
    in_channels (int): Number of input channels.
    out_channels (int): Number of output channels.
    expansion_ratio (float): Expansion ratio in the bottleneck.
    squeeze_ratio (float): Squeeze ratio in the SE Layer.
    stride (int): Stride of the depthwise convolution.
    activation_layer (Callable[..., nn.Module]): Activation function.
    norm_layer (Callable[..., nn.Module]): Normalization function.
    head_dim (int): Dimension of the attention heads.
    mlp_ratio (int): Ratio of the MLP layer.
    mlp_dropout (float): Dropout probability for the MLP layer.
    attention_dropout (float): Dropout probability for the attention layer.
    p_stochastic_dropout (float): Probability of stochastic depth.
    partition_size (int): Size of the partitions.
    grid_size (Tuple[int, int]): Size of the input feature grid.
c                óØ   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[ RS[RS[P                  3,          RS[RS[P                  3,          R	S[ R
S[ RS[RS[RS[RS[ RS[S[ S[ 3,          RR/# )r   rK   rL   rN   rM   r   rP   .rO   r�   rý   rÿ   rþ   rQ   rú   rü   r   N)r!   rR   r   r	   rS   r    )r"   rT   s   "€r#   r$   ÚMaxVitLayer.__annotate__˜  sÅ   ø€ ÷ ?,ñ ?,ñ ð?,ñ ð	?,ñ
 ð?,ñ ð?,ñ ð?,ñ ˜S¡"§)¡)˜^Õ,ð?,ñ # 3©¯	©	 >Õ2ð?,ñ ð?,ñ ð?,ñ ð?,ñ !ð?,ñ  $ð!?,ñ$ ð%?,ñ& ™™c˜•?ð'?,ð( 
ñ)?,r%   c                ó6  <€ \         SV `  4        \        4       p\        VVVVVVVVR 7      VR&   \	        VVVRVV	V\
        P                  VV
VR7      VR&   \	        VVVRVV	V\
        P                  VV
VR7      VR&   \
        P                  ! V4      V n        R# ))rK   rL   rM   rN   r   rO   rP   rQ   ÚMBconvr  )rK   r�   rú   rû   rü   rý   rO   rP   rþ   rÿ   rQ   Úwindow_attentionr  Úgrid_attentionN)	rd   re   r   rI   rø   r	   r  rh   rm   )rn   rK   rL   rN   rM   r   rP   rO   r�   rý   rÿ   rþ   rQ   rú   rü   rm   rs   s   &&&&&&&&&&&&&&& €r#   re   ÚMaxVitLayer.__init__˜  sÀ   ø€ ô* 	‰ÑÔä)›mˆô "Ø#Ø%Ø+Ø'ØØ-Ø!Ø!5ô	
ˆˆxÑô &=Ø$ØØ)Ø#ØØØ-Ü—|‘|Ø/Ø#Ø!5ô&
ˆÐ!Ñ"ô $;Ø$ØØ)Ø!ØØØ-Ü—|‘|Ø/Ø#Ø!5ô$
ˆÐÑ ô —m’m FÓ+ˆŽr%   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rv   rx   )r"   rT   s   "€r#   r$   r  Ù  s   ø€ ÷ ñ ™ð ¡Fñ r%   c                ó(   € V P                  V4      pV# ©zu
Args:
    x (Tensor): Input tensor of shape (B, C, H, W).
Returns:
    Tensor: Output tensor of shape (B, C, H, W).
©rm   )rn   rw   s   &&r#   r|   ÚMaxVitLayer.forwardÙ  s   € ð �K‰K˜‹NˆØˆr%   r%  r   rˆ   s   @@r#   r  r  ƒ  s$   ù‡ € ñ÷(?,ó ?,÷B÷ ð r%   r  c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚMaxVitBlockiä  aà  
A MaxVit block consisting of `n_layers` MaxVit layers.

 Args:
    in_channels (int): Number of input channels.
    out_channels (int): Number of output channels.
    expansion_ratio (float): Expansion ratio in the bottleneck.
    squeeze_ratio (float): Squeeze ratio in the SE Layer.
    activation_layer (Callable[..., nn.Module]): Activation function.
    norm_layer (Callable[..., nn.Module]): Normalization function.
    head_dim (int): Dimension of the attention heads.
    mlp_ratio (int): Ratio of the MLP layer.
    mlp_dropout (float): Dropout probability for the MLP layer.
    attention_dropout (float): Dropout probability for the attention layer.
    p_stochastic_dropout (float): Probability of stochastic depth.
    partition_size (int): Size of the partitions.
    input_grid_size (Tuple[int, int]): Size of the input feature grid.
    n_layers (int): Number of layers in the block.
    p_stochastic (List[float]): List of probabilities for stochastic depth for each layer.
c                óè   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[RS[P                  3,          RS[RS[P                  3,          RS[ R	S[ R
S[RS[RS[ RS[S[ S[ 3,          RS[ RS[S[,          RR/# )r   rK   rL   rN   rM   rP   .rO   r�   rý   rÿ   rþ   rú   Úinput_grid_sizeÚn_layersÚp_stochasticr   N)r!   rR   r   r	   rS   r    r+   )r"   rT   s   "€r#   r$   ÚMaxVitBlock.__annotate__ú  sÉ   ø€ ÷ 1ñ 1ñ ð1ñ ð	1ñ
 ð1ñ ð1ñ ˜S¡"§)¡)˜^Õ,ð1ñ # 3©¯	©	 >Õ2ð1ñ ð1ñ ð1ñ ð1ñ !ð1ñ  ð!1ñ" ™s¡C˜x�ð#1ñ& ð'1ñ( ™5•kð)1ð* 
ñ+1r%   c                óŒ  <€ \         SV `  4        \        V4      V8X  g   \        R V RV R24      h\        P
                  ! 4       V n        \        V^^^R7      V n        \        V4       FU  w  ppV^ 8X  d   ^M^pT ;P                  \        V^ 8X  d   TMTVVVVVVVVV	V
VV P                  VR7      .,          un        KW  	  R# )z'p_stochastic must have length n_layers=z, got p_stochastic=Ú.rX   )rK   rL   rN   rM   r   rP   rO   r�   rý   rÿ   rþ   rú   rü   rQ   N)rd   re   Úlenr—   r	   Ú
ModuleListrm   r(   rü   Ú	enumerater  )rn   rK   rL   rN   rM   rP   rO   r�   rý   rÿ   rþ   rú   r*  r+  r,  Úidxrâ   r   rs   s   &&&&&&&&&&&&&&&   €r#   re   ÚMaxVitBlock.__init__ú  sÎ   ø€ ô, 	‰ÑÔÜ�<Ó  HÔ,ÜÐFÀxÀjÐPcÐdpÐcqÐqrÐsÓtÐtä—m’m“oˆŒä/°ÈQÐWXÐbcÔdˆŒä Ö-‰FˆC�Ø œ(‘Q¨ˆFØ�KŠKÜØ/2°a¬x¡¸\Ø!-Ø"/Ø$3Ø!Ø)Ø%5Ø%Ø'Ø +Ø&7Ø#1Ø"Ÿn™nØ)*ôðõ �Kó .r%   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rv   rx   )r"   rT   s   "€r#   r$   r-  -  s   ø€ ÷ 	ñ 	™ð 	¡Fñ 	r%   c                ó<   € V P                    F  pV! V4      pK  	  V# r$  r%  )rn   rw   Úlayers   && r#   r|   ÚMaxVitBlock.forward-  s    € ð —[”[ˆEÙ�a“ŠAñ !àˆr%   )rü   rm   r   rˆ   s   @@r#   r(  r(  ä  s$   ù‡ € ñ÷*1ó 1÷f	÷ 	ð 	r%   r(  c                   ó‚   a a€ ] tR tRt oRtR]P                  R^^RRR3V3R lV 3R llltV3R	 lR
 ltR t	Rt
VtV ;t# )r   i9  a1  
Implements MaxVit Transformer from the `MaxViT: Multi-Axis Vision Transformer <https://arxiv.org/abs/2204.01697>`_ paper.
Args:
    input_size (Tuple[int, int]): Size of the input image.
    stem_channels (int): Number of channels in the stem.
    partition_size (int): Size of the partitions.
    block_channels (List[int]): Number of channels in each block.
    block_layers (List[int]): Number of layers in each block.
    stochastic_depth_prob (float): Probability of stochastic depth. Expands to a list of probabilities for each layer that scales linearly to the specified value.
    squeeze_ratio (float): Squeeze ratio in the SE Layer. Default: 0.25.
    expansion_ratio (float): Expansion ratio in the MBConv bottleneck. Default: 4.
    norm_layer (Callable[..., nn.Module]): Normalization function. Default: None (setting to None will produce a `BatchNorm2d(eps=1e-3, momentum=0.01)`).
    activation_layer (Callable[..., nn.Module]): Activation function Default: nn.GELU.
    head_dim (int): Dimension of the attention heads.
    mlp_ratio (int): Expansion ratio of the MLP layer. Default: 4.
    mlp_dropout (float): Dropout probability for the MLP layer. Default: 0.0.
    attention_dropout (float): Dropout probability for the attention layer. Default: 0.0.
    num_classes (int): Number of classes. Default: 1000.
Ng      Ð?r~   iè  c                 ó  <€ V ^8„  d   QhRS[ S[S[3,          RS[RS[RS[S[,          RS[S[,          RS[RS[RS[S[R	S[P                  3,          ,          R
S[R	S[P                  3,          RS[RS[RS[RS[RS[RS[RR/# )r   r   Ústem_channelsrú   Úblock_channelsÚblock_layersr�   Ústochastic_depth_probrP   .rO   rN   rM   rý   rÿ   rþ   Únum_classesr   N)r    r!   r+   rR   r   r   r	   rS   )r"   rT   s   "€r#   r$   ÚMaxVit.__annotate__N  sî   ø€ ÷ tñ tñ ™#™s˜(•Oðtñ
 ðtñ ðtñ ™S�	ðtñ ™3•iðtñ ðtñ  %ðtñ" ™X c©2¯9©9 nÕ5Õ6ð#tñ$ # 3©¯	©	 >Õ2ð%tñ( ð)tñ* ð+tñ. ð/tñ0 ð1tñ2 !ð3tñ6 ð7tð8 
ñ9tr%   c                ó,  <€ \         SV `  4        \        V 4       ^pVf   \        \        P
                  RRR7      p\        V\        V4      4      p\        V4       FH  w  ppV^ ,          V,          ^ 8w  g   V^,          V,          ^ 8w  g   K2  \        RV RV RV RV R	2	4      h	  \        P                  ! \        VV^^VV	R
RR7      \        W"^^RRRR7      4      V n        \        V^^^R7      pW0n        \        P                  ! 4       V n        V.VRR ,           pTp\"        P$                  ! ^ V\'        V4      4      P)                  4       p^ p\+        VVV4       Fi  w  pppV P                   P-                  \/        VVV
VVV	VVVVVVVVVVV,            R7      4       V P                   R,          P0                  pVV,          pKk  	  \        P                  ! \        P2                  ! ^4      \        P4                  ! 4       \        P6                  ! VR,          4      \        P8                  ! VR,          VR,          4      \        P:                  ! 4       \        P8                  ! VR,          VR
R7      4      V n        V P?                  4        R# )é   Ngü©ñÒMbP?g{®Gáz„?)ÚepsÚmomentumzInput size z
 of block z$ is not divisible by partition size zx. Consider changing the partition size or the input size.
Current configuration yields the following block input sizes: r/  F)r   rP   rO   rW   r]   T)r   rP   rO   rW   rX   )rK   rL   rN   rM   rP   rO   r�   rý   rÿ   rþ   rú   r*  r+  r,  )rW   r<   ) rd   re   r   r   r	   ÚBatchNorm2dr2   r0  r2  r—   rh   r   Ústemr(   rú   r1  ÚblocksÚnpÚlinspacerC   ÚtolistÚzipr.   r(  rü   ÚAdaptiveAvgPool2dÚFlattenr  rœ   ÚTanhÚ
classifierÚ_init_weights)rn   r   r;  rú   r<  r=  r�   r>  rP   rO   rN   rM   rý   rÿ   rþ   r?  Úinput_channelsÚblock_input_sizesr3  Úblock_input_sizerK   rL   r,  Úp_idxÚ
in_channelÚout_channelÚ
num_layersrs   s   &&&&&&&&&&&&&&&&           €r#   re   ÚMaxVit.__init__N  s  ø€ ô: 	‰ÑÔÜ˜DÔ!àˆð ÒÜ ¤§¡°TÀDÔIˆJô
 5°ZÄÀ^ÓATÓUÐÜ%.Ð/@Ö%AÑ!ˆCÐ!Ø Õ" ^Õ3°qÔ8Ð<LÈQÕ<OÐR`Õ<`ÐdeÖ<eÜ Ø!Ð"2Ð!3°:¸c¸UÐBfÐguÐfvð wUàUfÐTgÐghðjóð ñ &Bô —M’MÜ ØØØØØ%Ø!1ØØô	ô !Ø¨a¸ÀdÐ]aÐhlôó
ˆŒ	ô" ,¨JÀAÈaÐYZÔ[ˆ
Ø,Ôô —m’m“oˆŒØ$�o¨°s¸Ð(;Õ;ˆØ%ˆô
 —{’{ 1Ð&;¼SÀÓ=NÓO×VÑVÓXˆàˆÜ36°{ÀLÐR^Ö3_Ñ/ˆJ˜ ZØ�K‰K×ÑÜØ *Ø!,Ø"/Ø$3Ø)Ø%5Ø%Ø'Ø +Ø&7Ø#1Ø$.Ø'Ø!-¨e°e¸jÕ6HÐ!Iôôð$ Ÿ™ R�×2Ñ2ˆJØ�ZÕŠEñ) 4`ô0 Ÿ-š-Ü× Ò  Ó#Ü�JŠJ‹LÜ�LŠL˜¨Õ+Ó,Ü�IŠI�n RÕ(¨.¸Õ*<Ó=Ü�GŠG‹IÜ�IŠI�n RÕ(¨+¸EÔBó
ˆŒð 	×ÑÖr%   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rv   rx   )r"   rT   s   "€r#   r$   r@  Ä  s   ø€ ÷ ñ ™ð ¡Fñ r%   c                ó€   € V P                  V4      pV P                   F  pV! V4      pK  	  V P                  V4      pV# rÐ   )rF  rG  rO  )rn   rw   Úblocks   && r#   r|   ÚMaxVit.forwardÄ  s9   € Ø�I‰I�a‹LˆØ—[”[ˆEÙ�a“ŠAñ !à�O‰O˜AÓˆØˆr%   c                óB  € V P                  4        EF‰  p\        V\        P                  4      '       dg   \        P                  P                  VP                  R R7       VP                  e,   \        P                  P                  VP                  4       Kˆ  KŠ  \        V\        P                  4      '       dX   \        P                  P                  VP                  ^4       \        P                  P                  VP                  ^ 4       EK  \        V\        P                  4      '       g   EK$  \        P                  P                  VP                  R R7       VP                  f   EK`  \        P                  P                  VP                  4       EKŒ  	  R# )r”   r•   N)ÚmodulesÚ
isinstancer	   rf   r¦   Únormal_ÚweightrW   Úzeros_rE  Ú	constant_rœ   )rn   Úms   & r#   rP  ÚMaxVit._init_weightsË  sæ   € Ø—‘—ˆAÜ˜!œRŸY™Y×'Ò'Ü—‘—‘ §¡¨d�Ô3Ø—6‘6Ò%Ü—G‘G—N‘N 1§6¡6Ö*ñ &ä˜AœrŸ~™~×.Ò.Ü—‘×!Ñ! !§(¡(¨AÔ.Ü—‘×!Ñ! !§&¡&¨!×,Ü˜AœrŸy™y×)Õ)Ü—‘—‘ §¡¨d�Ô3Ø—6‘6Õ%Ü—G‘G—N‘N 1§6¡6×*ó  r%   )rG  rO  rú   rF  )r€   r�   r‚   rƒ   r„   r	   ÚGELUre   r|   rP  r…   r†   r‡   rˆ   s   @@r#   r   r   9  sJ   ù‡ € ñðJ :>Ø57·W±Wà#Ø!"àØ Ø#&à÷7tõ t÷lð ÷+ò +r%   c                óÒ   € V ^8„  d   QhR\         R\        \         ,          R\        \         ,          R\        R\         R\         R\        \        ,          R\
        R	\        R
\        /
# )r   r;  r<  r=  r>  rú   r�   ÚweightsÚprogressÚkwargsr   )r!   r+   rR   r   r   Úboolr   r   )r"   s   "r#   r$   r$   Ú  s{   € ÷ 'ñ 'äð'ô œ•Ið	'ô
 ”s•)ð'ô !ð'ô ð'ô ð'ô ”kÕ"ð'ô ð'ô ð'ô  ñ!'r%   c                 ó¬  € Ve   \        VR\        VP                  R,          4      4       VP                  R,          ^ ,          VP                  R,          ^,          8X  g   Q h\        VRVP                  R,          4       VP                  RR4      p	\	        RRV RVRVRVR	VR
VRV	/VB p
Ve#   V
P                  VP                  VRR7      4       V
# )Nr?  Ú
categoriesÚmin_sizer   r;  r<  r=  r>  r�   rú   T)ri  Ú
check_hash©éà   rq  r'   )r   r0  ÚmetaÚpopr   Úload_state_dictÚget_state_dict)r;  r<  r=  r>  rú   r�   rh  ri  rj  r   Úmodels   &&&&&&&&,  r#   Ú_maxvitrw  Ú  sõ   € ð$ ÒÜ˜f m´S¸¿¹ÀlÕ9SÓ5TÔUØ�|‰|˜JÕ'¨Õ*¨g¯l©l¸:Õ.FÀqÕ.IÔIÐIÐIÜ˜f l°G·L±LÀÕ4LÔMà—‘˜L¨*Ó5€Jäñ 	Ø#ð	à%ð	ð "ð	ð 4ð		ð
 ð	ð &ð	ð ð	ð ñ	€Eð ÒØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔYà€Lr%   c                   ó„   € ] tR tRt]! R]! ]^à^à]P                  R7      R]	RRRRRR	R
RRRRR//RRRRRR/R7      t
]
tRtR# )r   i  z9https://download.pytorch.org/models/maxvit_t-bc5ab103.pth)Ú	crop_sizeÚresize_sizeÚinterpolationrm  Ú
num_paramsiÈË×rn  ÚrecipezLhttps://github.com/pytorch/vision/tree/main/references/classification#maxvitÚ_metricszImageNet-1Kzacc@1gÍÌÌÌÌìT@zacc@5g‘í|?5.X@Ú_opsg¬Zd;@Ú
_file_sizegð§ÆK7±]@Ú_docsz½These weights reproduce closely the results of the paper using a similar training recipe.
            They were trained with a BatchNorm2D momentum of 0.99 instead of the more correct 0.01.)ÚurlÚ
transformsrr  r'   Nrp  )r€   r�   r‚   rƒ   r   r   r   r   ÚBICUBICr   ÚIMAGENET1K_V1ÚDEFAULTr…   r'   r%   r#   r   r     sz   † ÙàGÙØ¨3¸CÐO`×OhÑOhô
ð Ð.Ø˜(Ø˜
ØÐdØØØ˜VØ˜Vð ðð �EØ˜'Øð gð
ô€Mð. „Gr%   Ú
pretrained)rh  rh  ri  Tc                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# )r   rh  ri  rj  r   )r   r   rk  r   r   )r"   s   "r#   r$   r$   !  s0   € ÷ !ñ !œÔ"2Õ3ð !Ädð !Ô]`ð !Ôekñ !r%   c                ój   € \         P                  V 4      p \        R
R^@R. ROR. ROR^ RRR^RV R	V/VB # )aF  
Constructs a maxvit_t architecture from
`MaxViT: Multi-Axis Vision Transformer <https://arxiv.org/abs/2204.01697>`_.

Args:
    weights (:class:`~torchvision.models.MaxVit_T_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.MaxVit_T_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.maxvit.MaxVit``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/maxvit.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.MaxVit_T_Weights
    :members:
r;  r<  r=  r�   r>  gš™™™™™É?rú   rh  ri  r'   )é@   é€   é   i   )r   r   é   r   )r   Úverifyrw  )rh  ri  rj  s   $$,r#   Úmaxvit_tr�    sw   € ô. ×%Ñ% gÓ.€Gäñ 
Øð
â*ð
ò "ð
ð ð	
ð
 "ð
ð ð
ð ð
ð ð
ð ñ
ð 
r%   )r   r   r�  )NF)8r™   Úcollectionsr   Úcollections.abcr   Ú	functoolsr   Útypingr   r   r   ÚnumpyrH  r6   Útorch.nn.functionalr	   Ú
functionalr¹   r
   Útorchvision.models._apir   r   r   Útorchvision.models._metar   Útorchvision.models._utilsr   r   Útorchvision.ops.miscr   r   Ú torchvision.ops.stochastic_depthr   Útorchvision.transforms._presetsr   r   Útorchvision.utilsr   Ú__all__r(   r2   rG   rS   rI   rŠ   rÊ   r×   rê   rø   r  r(  r   rw  r   r…  r�  r'   r%   r#   Ú<module>rŸ     sG  ðÛ Ý #Ý $Ý ß *Ñ *ã Û ß Ð ß ß HÑ HÝ 9ß Tß HÝ <ß RÝ 1ò€õõõ#ôTˆR�Y‰Yô TônF¨2¯9©9ô FôR
ˆr�y‰yô 
ô�b—i‘iô ô4˜Ÿ	™	ô ô<e˜bŸi™iô eôP^�"—)‘)ô ^ôBR�"—)‘)ô Rôj^+ˆR�Y‰Yô ^+÷B'ôT�{ô ñ6 ÓÙ ,Ð0@×0NÑ0NÐ!OÔPð!°dð !ÈTö !ó Qó ò!r%   