+
     °³jN<  ã                   óÚ  € ^ RI Ht ^ RIHtHtHt ^ RIt^ RIHt ^ RIH	t	 ^RI
Ht ^RIHt ^RIHtHtHt ^RIHt ^R	IHtHt . R+OtR R lt ! R R]P2                  4      t ! R R
]P2                  4      tR R ltRR,R]RR/t ! R R]4      t ! R R]4      t ! R R]4      t  ! R R]4      t!]! 4       ]! R]PD                  3R7      R RR!R"/R# R$ ll4       4       t#]! 4       ]! R]PD                  3R7      R RR!R"/R% R& ll4       4       t$]! 4       ]! R] PD                  3R7      R RR!R"/R' R( ll4       4       t%]! 4       ]! R]!PD                  3R7      R RR!R"/R) R* ll4       4       t&R# )-é    )Úpartial)ÚAnyÚCallableÚOptionalN©ÚTensor)ÚImageClassification)Ú_log_api_usage_once)Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interfaceÚShuffleNetV2ÚShuffleNet_V2_X0_5_WeightsÚShuffleNet_V2_X1_0_WeightsÚShuffleNet_V2_X1_5_WeightsÚShuffleNet_V2_X2_0_Weightsc                ó<   € V ^8„  d   QhR\         R\        R\         /# )é   ÚxÚgroupsÚreturn)r   Úint)Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchvision/models/shufflenetv2.pyÚ__annotate__r      s!   € ÷ ñ ”vð ¤sð ¬vñ ó    c                 óÒ   € V P                  4       w  r#rEW1,          pV P                  W!WdV4      p \        P                  ! V ^^4      P	                  4       p V P                  W#WE4      p V # )é   )ÚsizeÚviewÚtorchÚ	transposeÚ
contiguous)r   r   Ú	batchsizeÚnum_channelsÚheightÚwidthÚchannels_per_groups   &&     r   Úchannel_shuffler,      sb   € Ø-.¯V©V«XÑ*€I˜VØ%Õ/Ðð 	
�‰ˆyÐ"4¸eÓD€Aä�Š˜˜1˜aÓ ×+Ñ+Ó-€Að 	
�‰ˆy¨Ó6€Aà€Hr   c                   óp   a a€ ] tR t^+t oV3R lV 3R llt]RV3R lR ll4       tV3R lR ltRtVt	V ;t
# )	ÚInvertedResidualc                ó0   <€ V ^8„  d   QhRS[ RS[ RS[ RR/# )r   ÚinpÚoupÚstrider   N)r   )r   Ú__classdict__s   "€r   r   ÚInvertedResidual.__annotate__,   s)   ø€ ÷ (
ñ (
™Cð (
¡cð (
±3ð (
¸4ñ (
r   c                ó2  <€ \         SV `  4        ^Tu;8:  d   ^8:  g   M \        R4      hW0n        V^,          pV P                  ^8X  d#   W^,          8w  d   \        RV RV RV R24      hV P                  ^8”  d”   \        P
                  ! V P                  W^V P                  ^R7      \        P                  ! V4      \        P                  ! W^^^ RR7      \        P                  ! V4      \        P                  ! R	R
7      4      V n
        M\        P
                  ! 4       V n
        \        P
                  ! \        P                  ! V P                  ^8”  d   TMTV^^^ RR7      \        P                  ! V4      \        P                  ! R	R
7      V P                  WD^V P                  ^R7      \        P                  ! V4      \        P                  ! WD^^^ RR7      \        P                  ! V4      \        P                  ! R	R
7      4      V n        R# )r!   zillegal stride valuezInvalid combination of stride z, inp z	 and oup zB values. If stride == 1 then inp should be equal to oup // 2 << 1.©Úkernel_sizer2   ÚpaddingF)r7   r2   r8   ÚbiasT©ÚinplaceN)ÚsuperÚ__init__Ú
ValueErrorr2   ÚnnÚ
SequentialÚdepthwise_convÚBatchNorm2dÚConv2dÚReLUÚbranch1Úbranch2)Úselfr0   r1   r2   Úbranch_featuresÚ	__class__s   &&&& €r   r=   ÚInvertedResidual.__init__,   s§  ø€ Ü‰ÑÔà�VÖ ˜qÖ ÜÐ3Ó4Ð4ØŒà �(ˆØ�K‰K˜1Ô 3¸QÕ*>Ô#>ÜØ0°°¸¸s¸eÀ9ÈSÈEð  RTð  Uóð ð �;‰;˜Œ?ÜŸ=š=Ø×#Ñ# C¸!ÀDÇKÁKÐYZÐ#Ó[Ü—’˜sÓ#Ü—	’	˜#¸AÀaÐQRÐY^Ô_Ü—’˜Ó/Ü—’ Ô%óˆD�Lô Ÿ=š=›?ˆDŒLä—}’}Ü�IŠIØŸ™ aœ‘¨oØØØØØôô �NŠN˜?Ó+Ü�GŠG˜DÔ!Ø×Ñ ÈaÐX\×XcÑXcÐmnÐÓoÜ�NŠN˜?Ó+Ü�IŠI�oÀAÈaÐYZÐafÔgÜ�NŠN˜?Ó+Ü�GŠG˜DÔ!ó
ˆŽr   c                óX   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[ RS[RS[P                  /# )r   ÚiÚor7   r2   r8   r9   r   )r   Úboolr?   rC   )r   r3   s   "€r   r   r4   W   sR   ø€ ÷ Rñ RÙðRÙðRÙ%(ðRÙ25ðRÙDGðRÙSWðRá	�‰ñRr   c           
     ó6   € \         P                  ! WW#WEV R 7      # ))r9   r   )r?   rC   )rL   rM   r7   r2   r8   r9   s   &&&&&&r   rA   ÚInvertedResidual.depthwise_convV   s   € ô �yŠy˜˜{°GÈqÔQÐQr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r   r   r   r   )r   r3   s   "€r   r   r4   \   s   ø€ ÷ 	ñ 	™ð 	¡Fñ 	r   c                ó,  € V P                   ^8X  d?   VP                  ^^R7      w  r#\        P                  ! W P	                  V4      3^R7      pM8\        P                  ! V P                  V4      V P	                  V4      3^R7      p\        V^4      pV# )r!   )Údim)r2   Úchunkr$   ÚcatrF   rE   r,   )rG   r   Úx1Úx2Úouts   &&   r   ÚforwardÚInvertedResidual.forward\   st   € Ø�;‰;˜!ÔØ—W‘W˜Q A�WÓ&‰FˆBÜ—)’)˜R§¡¨bÓ!1Ð2¸Ô:‰Cä—)’)˜TŸ\™\¨!›_¨d¯l©l¸1«oÐ>ÀAÔFˆCä˜c 1Ó%ˆàˆ
r   )rE   rF   r2   )r!   r   F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r=   ÚstaticmethodrA   rZ   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rI   r3   s   @@r   r.   r.   +   s;   ù‡ € ÷(
ó (
ðT ÷Rñ Ró ðR÷
	÷ 	ð 	r   r.   c                   ój   a a€ ] tR t^ht oR]3V3R lV 3R llltV3R lR ltV3R lR ltRtVt	V ;t
# )	r   iè  c          
      ó~   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          RS[RS[RS[P                  3,          RR/# )r   Ústages_repeatsÚstages_out_channelsÚnum_classesÚinverted_residual.r   N)Úlistr   r   r?   ÚModule)r   r3   s   "€r   r   ÚShuffleNetV2.__annotate__i   sR   ø€ ÷ .:ñ .:á™S�	ð.:ñ "¡#�Yð.:ñ ð	.:ñ
 $ C©¯© NÕ3ð.:ð 
ñ.:r   c                ó6  <€ \         SV `  4        \        V 4       \        V4      ^8w  d   \	        R4      h\        V4      ^8w  d   \	        R4      hW n        ^pV P
                  ^ ,          p\        P                  ! \        P                  ! WV^^^RR7      \        P                  ! V4      \        P                  ! RR7      4      V n        Tp\        P                  ! ^^^R7      V n        V  V  V  R Uu. uF  pRV 2NK
  	  pp\        W�V P
                  R	,          4       Fa  w  ršpV! WV^4      .p\        V
^,
          4       F  pVP!                  V! Wf^4      4       K  	  \#        W	\        P                  ! V!  4       TpKc  	  V P
                  R,          p\        P                  ! \        P                  ! WV^^^ RR7      \        P                  ! V4      \        P                  ! RR7      4      V n        \        P&                  ! Wc4      V n        R
# u upi )é   z2expected stages_repeats as list of 3 positive intsz7expected stages_out_channels as list of 5 positive intsF)r9   Tr:   r6   Ústage:r!   NNN)r   ro   é   éÿÿÿÿ)r<   r=   r
   Úlenr>   Ú_stage_out_channelsr?   r@   rC   rB   rD   Úconv1Ú	MaxPool2dÚmaxpoolÚzipÚrangeÚappendÚsetattrÚconv5ÚLinearÚfc)rG   rg   rh   ri   rj   Úinput_channelsÚoutput_channelsrL   Ústage_namesÚnameÚrepeatsÚseqrI   s   &&&&&       €r   r=   ÚShuffleNetV2.__init__i   s¸  ø€ ô 	‰ÑÔÜ˜DÔ!äˆ~Ó !Ô#ÜÐQÓRÐRÜÐ"Ó# qÔ(ÜÐVÓWÐWØ#6Ô àˆØ×2Ñ2°1Õ5ˆÜ—]’]Ü�IŠI�n°q¸!¸QÀUÔKÜ�NŠN˜?Ó+Ü�GŠG˜DÔ!ó
ˆŒ
ð
 )ˆä—|’|°¸!ÀQÔGˆŒñ 	ÙÙÙ,5Ó6©I q˜˜q˜c“{©IˆÐ6Ü.1°+Èt×OgÑOgÐhjÕOkÖ.lÑ*ˆD˜?Ù$ ^ÀaÓHÐIˆCÜ˜7 Q�;Ö'�Ø—
‘
Ñ,¨_ÈqÓQÖRñ (ä�D¤§¢¨sÑ 3Ô4Ø,ŠNñ /mð ×2Ñ2°2Õ6ˆÜ—]’]Ü�IŠI�n°q¸!¸QÀUÔKÜ�NŠN˜?Ó+Ü�GŠG˜DÔ!ó
ˆŒ
ô —)’)˜OÓ9ˆŽùò 7s   Ã5Hc                ó&   <€ V ^8„  d   QhRS[ RS[ /# rR   r   )r   r3   s   "€r   r   rm   ™   s   ø€ ÷ 
ñ 
™vð 
©&ñ 
r   c                ó  € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV P                  V4      pVP                  ^^.4      pV P                  V4      pV# )r   )ru   rw   Ústage2Ústage3Ústage4r|   Úmeanr~   ©rG   r   s   &&r   Ú_forward_implÚShuffleNetV2._forward_impl™   ss   € à�J‰J�q‹MˆØ�L‰L˜‹OˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�J‰J�q‹MˆØ�F‰F�A�q�6‹NˆØ�G‰G�A‹JˆØˆr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rR   r   )r   r3   s   "€r   r   rm   ¥   s   ø€ ÷ %ñ %™ð %¡Fñ %r   c                ó$   € V P                  V4      # )N)r�   rŒ   s   &&r   rZ   ÚShuffleNetV2.forward¥   s   € Ø×!Ñ! !Ó$Ð$r   )rt   ru   r|   r~   rw   )r\   r]   r^   r_   r.   r=   r�   rZ   ra   rb   rc   rd   s   @@r   r   r   h   s1   ù‡ € ð
  Ø6F÷.:õ .:÷`
ð 
÷%÷ %ð %r   c          
      ój   € V ^8„  d   QhR\         \        ,          R\        R\        R\        R\        /# )r   ÚweightsÚprogressÚargsÚkwargsr   )r   r   rN   r   r   )r   s   "r   r   r   ©   s?   € ÷ ñ Ü”kÕ"ðäðô ðô ð	ô
 ñr   c                 ó¾   € V e(   \        VR\        V P                  R,          4      4       \        V/ VB pV e#   VP	                  V P                  VRR7      4       V# )Nri   Ú
categoriesT)r”   Ú
check_hash)r   rs   Úmetar   Úload_state_dictÚget_state_dict)r“   r”   r•   r–   Úmodels   &&*, r   Ú_shufflenetv2rž   ©   s]   € ð ÒÜ˜f m´S¸¿¹ÀlÕ9SÓ5TÔUä˜$Ð) &Ñ)€EàÒØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔYà€Lr   Úmin_sizer˜   Úrecipez2https://github.com/ericsun99/Shufflenet-v2-Pytorchc                   óh   € ] tR t^Át]! R]! ]^àR7      / ]CRRRRRRR	R
//RRRRRR/CR7      t]t	Rt
R# )r   zDhttps://download.pytorch.org/models/shufflenetv2_x0.5-f707e7126e.pth©Ú	crop_sizeÚ
num_paramsiÛ Ú_metricsúImageNet-1Kúacc@1g-²�ï§FN@úacc@5g9´Èv¾oT@Ú_opsg{®Gáz¤?Ú
_file_sizegTã¥›Ä @Ú_docsúVThese weights were trained from scratch to reproduce closely the results of the paper.©ÚurlÚ
transformsrš   © N©r\   r]   r^   r_   r   r   r	   Ú_COMMON_METAÚIMAGENET1K_V1ÚDEFAULTra   r°   r   r   r   r   Á   sd   † ÙàRÙÐ.¸#Ô>ð
Øð
à˜'ØØØ˜VØ˜Vð ðð �DØ˜%ØÐqñ
ô	€Mð$ „Gr   c                   óh   € ] tR t^×t]! R]! ]^àR7      / ]CRRRRRRR	R
//RRRRRR/CR7      t]t	Rt
R# )r   zBhttps://download.pytorch.org/models/shufflenetv2_x1-5666bf0f80.pthr¢   r¤   iÌÄ" r¥   r¦   r§   gºI+WQ@r¨   gNbX9V@r©   g�Âõ(\�Â?rª   g¢E¶óý”!@r«   r¬   r­   r°   Nr±   r°   r   r   r   r   ×   sd   † ÙàPÙÐ.¸#Ô>ð
Øð
à˜'ØØØ˜VØ˜Vð ðð �EØ˜%ØÐqñ
ô	€Mð$ „Gr   c                   ón   € ] tR t^ít]! R]! ]^à^èR7      / ]CRRRRRRR	R
RR//RRRRRR/CR7      t]t	Rt
R# )r   zBhttps://download.pytorch.org/models/shufflenetv2_x1_5-3c479a10.pth©r£   Úresize_sizer    ú+https://github.com/pytorch/vision/pull/5906r¤   iv5 r¥   r¦   r§   g9´Èv¾?R@r¨   g/Ý$�ÅV@r©   g‹lçû©ñÒ?rª   gw¾Ÿ/+@r«   úé
                These weights were trained from scratch by using TorchVision's `new training recipe
                <https://pytorch.org/blog/how-to-train-state-of-the-art-models-using-torchvision-latest-primitives/>`_.
            r­   r°   Nr±   r°   r   r   r   r   í   ón   † ÙØPÙÐ.¸#È3ÔOð
Øð
àÐCØ˜'ØØØ˜VØ˜Vð ðð �EØ˜&Øð ñ
ô€Mð* „Gr   c                   ón   € ] tR tRt]! R]! ]^à^èR7      / ]CRRRRRR	R
RRR//RRRRRR/CR7      t]t	Rt
R# )r   i  zBhttps://download.pytorch.org/models/shufflenetv2_x2_0-8be3c8ee.pthr·   r    r¹   r¤   iÌÒp r¥   r¦   r§   g…ëQ¸S@r¨   gªñÒMb@W@r©   g-²�ï§â?rª   g+‡Ùn<@r«   rº   r­   r°   Nr±   r°   r   r   r   r     r»   r   Ú
pretrained)r“   r“   r”   Tc                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# ©r   r“   r”   r–   r   )r   r   rN   r   r   )r   s   "r   r   r   !  s8   € ÷ Zñ ZÜÔ3Õ4ðZÜGKðZÜ^aðZäñZr   c                óP   € \         P                  V 4      p \        W. RO. RO3/ VB # )aÅ  
Constructs a ShuffleNetV2 architecture with 0.5x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

Args:
    weights (:class:`~torchvision.models.ShuffleNet_V2_X0_5_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.ShuffleNet_V2_X0_5_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.shufflenetv2.ShuffleNetV2``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ShuffleNet_V2_X0_5_Weights
    :members:
©rq   é   rq   )é   é0   é`   éÀ   é   )r   Úverifyrž   ©r“   r”   r–   s   $$,r   Úshufflenet_v2_x0_5rÊ     s*   € ô4 )×/Ñ/°Ó8€Gä˜ªIÒ7NÑYÐRXÑYÐYr   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# r¿   )r   r   rN   r   r   )r   s   "r   r   r   @  ó8   € ÷ \ñ \ÜÔ3Õ4ð\ÜGKð\Ü^að\äñ\r   c                óP   € \         P                  V 4      p \        W. RO. RO3/ VB # )aÅ  
Constructs a ShuffleNetV2 architecture with 1.0x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

Args:
    weights (:class:`~torchvision.models.ShuffleNet_V2_X1_0_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.ShuffleNet_V2_X1_0_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.shufflenetv2.ShuffleNetV2``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ShuffleNet_V2_X1_0_Weights
    :members:
rÁ   )rÃ   ét   éè   iÐ  rÇ   )r   rÈ   rž   rÉ   s   $$,r   Úshufflenet_v2_x1_0rÐ   >  ó*   € ô4 )×/Ñ/°Ó8€Gä˜ªIÒ7PÑ[ÐTZÑ[Ð[r   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# r¿   )r   r   rN   r   r   )r   s   "r   r   r   _  rÌ   r   c                óP   € \         P                  V 4      p \        W. RO. RO3/ VB # )aÅ  
Constructs a ShuffleNetV2 architecture with 1.5x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

Args:
    weights (:class:`~torchvision.models.ShuffleNet_V2_X1_5_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.ShuffleNet_V2_X1_5_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.shufflenetv2.ShuffleNetV2``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ShuffleNet_V2_X1_5_Weights
    :members:
rÁ   )rÃ   é°   i`  iÀ  rÇ   )r   rÈ   rž   rÉ   s   $$,r   Úshufflenet_v2_x1_5rÕ   ]  rÑ   r   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# r¿   )r   r   rN   r   r   )r   s   "r   r   r   ~  rÌ   r   c                óP   € \         P                  V 4      p \        W. RO. RO3/ VB # )aÅ  
Constructs a ShuffleNetV2 architecture with 2.0x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

Args:
    weights (:class:`~torchvision.models.ShuffleNet_V2_X2_0_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.ShuffleNet_V2_X2_0_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.shufflenetv2.ShuffleNetV2``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ShuffleNet_V2_X2_0_Weights
    :members:
rÁ   )rÃ   éô   iè  iÐ  i   )r   rÈ   rž   rÉ   s   $$,r   Úshufflenet_v2_x2_0rÙ   |  rÑ   r   )	r   r   r   r   r   rÊ   rÐ   rÕ   rÙ   )r!   r!   )'Ú	functoolsr   Útypingr   r   r   r$   Útorch.nnr?   r   Útransforms._presetsr	   Úutilsr
   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__r,   rl   r.   r   rž   r²   r   r   r   r   r³   rÊ   rÐ   rÕ   rÙ   r°   r   r   Ú<module>rã      sº  ðÝ ß *Ñ *ã Ý Ý å 5Ý 'ß 6Ñ 6Ý 'ß Bò
€õô:�r—y‘yô :ôz>%�2—9‘9ô >%õBð$ �ØÐ&ØÐBð€ô ô ô, ô ô, ô ô2 ô ñ2 ÓÙ ,Ð0J×0XÑ0XÐ!YÔZðZØ7;ðZØNRöZó [ó ðZñ: ÓÙ ,Ð0J×0XÑ0XÐ!YÔZð\Ø7;ð\ØNRö\ó [ó ð\ñ: ÓÙ ,Ð0J×0XÑ0XÐ!YÔZð\Ø7;ð\ØNRö\ó [ó ð\ñ: ÓÙ ,Ð0J×0XÑ0XÐ!YÔZð\Ø7;ð\ØNRö\ó [ó ò\r   