+
     °³jnB  ã            
       óÚ  € ^ 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
IHtHtHtHt ^RIHtHtHt . R:Ot ! R R]P@                  4      t! ! R R]PD                  4      t#R R lt$RR;R]RRRRRR/t% ! R R]4      t& ! R R]4      t' ! R  R]4      t( ! R! R]4      t)]! R"R#7      ]! R$R% 3R&7      R'RR(R)R*R+/R, R- ll4       4       t*]! R.R#7      ]! R$R/ 3R&7      R'RR(R)R*R+/R0 R1 ll4       4       t+]! R2R#7      ]! R$R3 3R&7      R'RR(R)R*R+/R4 R5 ll4       4       t,]! R6R#7      ]! R$R7 3R&7      R'RR(R)R*R+/R8 R9 ll4       4       t-R# )<é    )Úpartial)ÚAnyÚOptionalÚUnionN©ÚTensor)Úshufflenetv2)ÚImageClassification)Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚShuffleNet_V2_X0_5_WeightsÚShuffleNet_V2_X1_0_WeightsÚShuffleNet_V2_X1_5_WeightsÚShuffleNet_V2_X2_0_Weights)Ú_fuse_modulesÚ_replace_reluÚquantize_modelÚQuantizableShuffleNetV2Ú#ShuffleNet_V2_X0_5_QuantizedWeightsÚ#ShuffleNet_V2_X1_0_QuantizedWeightsÚ#ShuffleNet_V2_X1_5_QuantizedWeightsÚ#ShuffleNet_V2_X2_0_QuantizedWeightsc                   óP   a a€ ] tR t^#t oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚQuantizableInvertedResidualc                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# ©é   ÚargsÚkwargsÚreturnN©r   )ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchvision/models/quantization/shufflenetv2.pyÚ__annotate__Ú(QuantizableInvertedResidual.__annotate__$   s"   ø€ ÷ 2ñ 2™cð 2©Sð 2°Tñ 2ó    c                ón   <€ \         SV `  ! V/ VB  \        P                  P	                  4       V n        R # ©N)ÚsuperÚ__init__ÚnnÚ	quantizedÚFloatFunctionalÚcat©Úselfr"   r#   Ú	__class__s   &*,€r(   r/   Ú$QuantizableInvertedResidual.__init__$   s)   ø€ Ü‰Ò˜$Ð) &Ò)Ü—<‘<×/Ñ/Ó1ˆŽr+   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r!   Úxr$   r   )r&   r'   s   "€r(   r)   r*   (   s   ø€ ÷ 	ñ 	™ð 	¡Fñ 	r+   c                óV  € V P                   ^8X  dD   VP                  ^^R7      w  r#V P                  P                  W P                  V4      .^R7      pM=V P                  P                  V P	                  V4      V P                  V4      .^R7      p\
        P                  ! V^4      pV# )é   )Údim)ÚstrideÚchunkr3   Úbranch2Úbranch1r	   Úchannel_shuffle)r5   r:   Úx1Úx2Úouts   &&   r(   ÚforwardÚ#QuantizableInvertedResidual.forward(   s†   € Ø�;‰;˜!ÔØ—W‘W˜Q A�WÓ&‰FˆBØ—(‘(—,‘, §L¡L°Ó$4Ð5¸1�,Ó=‰Cà—(‘(—,‘, §¡¨Q£°·±¸a³ÐAÀq�,ÓIˆCä×*Ò*¨3°Ó2ˆàˆ
r+   )r3   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r/   rF   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r6   r'   s   @@r(   r   r   #   s   ù‡ € ÷2ó 2÷	÷ 	ð 	r+   r   c                   óf   a a€ ] tR t^4t oV3R lV 3R lltV3R lR ltRV3R lR lltRtVtV ;t	# )	r   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# r    r%   )r&   r'   s   "€r(   r)   Ú$QuantizableShuffleNetV2.__annotate__6   s"   ø€ ÷ ;ñ ;™cð ;©Sð ;°Tñ ;r+   c                óè   <€ \         SV `  ! VR \        /VB  \        P                  P
                  P                  4       V n        \        P                  P
                  P                  4       V n	        R# )Úinverted_residualN)
r.   r/   r   ÚtorchÚaoÚquantizationÚ	QuantStubÚquantÚDeQuantStubÚdequantr4   s   &*,€r(   r/   Ú QuantizableShuffleNetV2.__init__6   sP   ø€ Ü‰Ò˜$ÐXÔ2MÐXÐQWÒXÜ—X‘X×*Ñ*×4Ñ4Ó6ˆŒ
Ü—x‘x×,Ñ,×8Ñ8Ó:ˆŽr+   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r9   r   )r&   r'   s   "€r(   r)   rR   ;   s   ø€ ÷ ñ ™ð ¡Fñ r+   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r-   )rY   Ú_forward_implr[   )r5   r:   s   &&r(   rF   ÚQuantizableShuffleNetV2.forward;   s1   € Ø�J‰J�q‹MˆØ×Ñ˜qÓ!ˆØ�L‰L˜‹OˆØˆr+   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r!   Úis_qatr$   N)r   Úbool)r&   r'   s   "€r(   r)   rR   A   s   ø€ ÷ ñ ¡©$¥ð ¸4ñ r+   c                óÌ  € V P                   P                  4        F&  w  r#VR9   g   K  Vf   K  \        V. R	O.VRR7       K(  	  V P                  4        F‹  p\	        V4      \
        J g   K  \        VP                  P                   P                  4       4      ^ 8”  d    \        VP                  RR.. R
O.VRR7       \        VP                  . R	ORR.. RO.VRR7       K�  	  R# )a  Fuse conv/bn/relu modules in shufflenetv2 model

Fuse conv+bn+relu/ conv+relu/conv+bn modules to prepare for quantization.
Model is modified in place.

.. note::
    Note that this operation does not change numerics
    and the model after modification is in floating point
NÚ0Ú1T)ÚinplaceÚ3Ú4)Úconv1Úconv5)re   rf   Ú2)rl   rh   ri   )Ú5Ú6Ú7)	Ú_modulesÚitemsr   ÚmodulesÚtyper   ÚlenrA   r@   )r5   rb   ÚnameÚms   &&  r(   Ú
fuse_modelÚ"QuantizableShuffleNetV2.fuse_modelA   s¹   € ð —}‘}×*Ñ*Ö,‰GˆDØÐ)Ö)¨a¬mÜ˜a¢/Ð!2°FÀD×Iñ -ð —‘–ˆAÜ�A‹wÔ5Õ5Ü�q—y‘y×)Ñ)×/Ñ/Ó1Ó2°QÔ6Ü! !§)¡)¨s°C¨jº/Ð-JÈFÐ\`ÕaÜØ—I‘IÚ$ s¨C j²/ÐBØØ ÷	ó	  r+   )r[   rY   r-   )
rH   rI   rJ   rK   r/   rF   rw   rL   rM   rN   rO   s   @@r(   r   r   4   s(   ù‡ € ÷;ó ;÷
ð ÷÷ ò r+   c                ó®   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        \        ,          R\        R\        R\
        R\        /# )r!   Ústages_repeatsÚstages_out_channelsÚweightsÚprogressÚquantizer#   r$   )ÚlistÚintr   r   rc   r   r   )r&   s   "r(   r)   r)   Z   s[   € ÷ ñ Üœ•Iðäœc�ðô ”kÕ"ð	ô
 ðô ðô ðô ñr+   c                ó~  € VeW   \        VR\        VP                  R,          4      4       RVP                  9   d   \        VRVP                  R,          4       VP                  RR4      p\	        W3/ VB p\        V4       V'       d   \        Wv4       Ve#   VP                  VP                  VRR7      4       V# )NÚnum_classesÚ
categoriesÚbackendÚfbgemmT)r}   Ú
check_hash)	r   rt   ÚmetaÚpopr   r   r   Úload_state_dictÚget_state_dict)rz   r{   r|   r}   r~   r#   r„   Úmodels   &&$$$,  r(   Ú_shufflenetv2rŒ   Z   s¡   € ð ÒÜ˜f m´S¸¿¹ÀlÕ9SÓ5TÔUØ˜Ÿ™Ô$Ü! &¨)°W·\±\À)Õ5LÔMØ�j‰j˜ HÓ-€Gä# NÑRÈ6ÑR€EÜ�%ÔßÜ�uÔ&àÒØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔYà€Lr+   Úmin_sizerƒ   r„   r…   Úrecipezdhttps://github.com/pytorch/vision/tree/main/references/classification#post-training-quantized-modelsÚ_docsz’
        These weights were produced by doing Post Training Quantization (eager mode) on top of the unquantized
        weights listed below.
    c                   ó|   € ] tR t^€t]! R]! ]^àR7      / ]CRRR]P                  RRRR	R
R//RRRR/CR7      t
]
tRtR# )r   zShttps://download.pytorch.org/models/quantized/shufflenetv2_x0.5_fbgemm-00845098.pth©Ú	crop_sizeÚ
num_paramsiÛ ÚunquantizedÚ_metricsúImageNet-1Kúacc@1g#Ûù~jüL@úacc@5gR¸…ëñS@Ú_opsg{®Gáz¤?Ú
_file_sizegj¼t“ø?©ÚurlÚ
transformsr‡   © N)rH   rI   rJ   rK   r   r   r
   Ú_COMMON_METAr   ÚIMAGENET1K_V1ÚIMAGENET1K_FBGEMM_V1ÚDEFAULTrL   rž   r+   r(   r   r   €   sk   † Ù"ØaÙÐ.¸#Ô>ð
Øð
à˜'ØÐ5×CÑCØØØ˜VØ˜Vð ðð �DØ˜%ñ
ôÐð" #„Gr+   c                   ó|   € ] tR t^•t]! R]! ]^àR7      / ]CRRR]P                  RRRR	R
R//RRRR/CR7      t
]
tRtR# )r   zQhttps://download.pytorch.org/models/quantized/shufflenetv2_x1_fbgemm-1e62bb32.pthr‘   r“   iÌÄ" r”   r•   r–   r—   g×£p=
Q@r˜   gh‘í|?åU@r™   g�Âõ(\�Â?rš   gyé&1¬@r›   rž   N)rH   rI   rJ   rK   r   r   r
   rŸ   r   r    r¡   r¢   rL   rž   r+   r(   r   r   •   sk   † Ù"Ø_ÙÐ.¸#Ô>ð
Øð
à˜'ØÐ5×CÑCØØØ˜VØ˜Vð ðð �EØ˜%ñ
ôÐð" #„Gr+   c                   ó‚   € ] tR t^ªt]! R]! ]^à^èR7      / ]CRRRRR]P                  RR	R
RRR//RRRR/CR7      t
]
tRtR# )r   zShttps://download.pytorch.org/models/quantized/shufflenetv2_x1_5_fbgemm-d7401f05.pth©r’   Úresize_sizerŽ   ú+https://github.com/pytorch/vision/pull/5906r“   iv5 r”   r•   r–   r—   gÙÎ÷SR@r˜   gÍÌÌÌÌ¬V@r™   g‹lçû©ñÒ?rš   gÇK7‰A`@r›   rž   N)rH   rI   rJ   rK   r   r   r
   rŸ   r   r    r¡   r¢   rL   rž   r+   r(   r   r   ª   ós   † Ù"ØaÙÐ.¸#È3ÔOð
Øð
àÐCØ˜'ØÐ5×CÑCØØØ˜VØ˜Vð ðð �EØ˜%ñ
ôÐð$ #„Gr+   c                   ó‚   € ] tR t^Àt]! R]! ]^à^èR7      / ]CRRRRR]P                  RR	R
RRR//RRRR/CR7      t
]
tRtR# )r   zShttps://download.pytorch.org/models/quantized/shufflenetv2_x2_0_fbgemm-5cac526c.pthr¥   rŽ   r§   r“   iÌÒp r”   r•   r–   r—   g-²�ï§ÖR@r˜   g¬Zd;W@r™   g-²�ï§â?rš   g‘í|?5Þ@r›   rž   N)rH   rI   rJ   rK   r   r   r
   rŸ   r   r    r¡   r¢   rL   rž   r+   r(   r   r   À   r¨   r+   Úquantized_shufflenet_v2_x0_5)ru   Ú
pretrainedc                 ór   € V P                  R R4      '       d   \        P                  # \        P                  # ©r~   F)Úgetr   r¡   r   r    ©r#   s   &r(   Ú<lambda>r°   Ú   ó1   € à�z‰z˜* e×,Ò,ô 0×DÑDð :ä+×9Ñ9ð:r+   )r|   r|   r}   Tr~   Fc          
      óŒ   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\        R\
        R\        /# ©r!   r|   r}   r~   r#   r$   )r   r   r   r   rc   r   r   )r&   s   "r(   r)   r)   á   óM   € ÷ *ñ *ä”eÔ?ÔA[Ð[Õ\Õ]ð*ô ð*ô ð	*ô
 ð*ô ñ*r+   c           	     óv   € V'       d   \         M\        P                  V 4      p \        . RO. RO3RV RVRV/VB # )aå  
Constructs a ShuffleNetV2 with 0.5x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

.. note::
    Note that ``quantize = True`` returns a quantized model with 8 bit
    weights. Quantized models only support inference and run on CPUs.
    GPU inference is not yet supported.

Args:
    weights (:class:`~torchvision.models.quantization.ShuffleNet_V2_X0_5_QuantizedWeights` or :class:`~torchvision.models.ShuffleNet_V2_X0_5_Weights`, optional): The
        pretrained weights for the model. See
        :class:`~torchvision.models.quantization.ShuffleNet_V2_X0_5_QuantizedWeights` 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.
    quantize (bool, optional): If True, return a quantized version of the model.
        Default is False.
    **kwargs: parameters passed to the ``torchvision.models.quantization.ShuffleNet_V2_X0_5_QuantizedWeights``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/quantization/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.quantization.ShuffleNet_V2_X0_5_QuantizedWeights
    :members:

.. autoclass:: torchvision.models.ShuffleNet_V2_X0_5_Weights
    :members:
    :noindex:
r|   r}   r~   ©é   é   r·   )é   é0   é`   éÀ   é   )r   r   ÚverifyrŒ   ©r|   r}   r~   r#   s   $$$,r(   Úshufflenet_v2_x0_5rÀ   Ö   sO   € ÷d 7?Õ2ÔD^×fÑfÐgnÓo€GÜÚÒ*ñØ4;ðØFNðØYaðØekñð r+   Úquantized_shufflenet_v2_x1_0c                 ór   € V P                  R R4      '       d   \        P                  # \        P                  # r­   )r®   r   r¡   r   r    r¯   s   &r(   r°   r°     r±   r+   c          
      óŒ   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\        R\
        R\        /# r³   )r   r   r   r   rc   r   r   )r&   s   "r(   r)   r)     r´   r+   c           	     óv   € V'       d   \         M\        P                  V 4      p \        . RO. RO3RV RVRV/VB # )aå  
Constructs a ShuffleNetV2 with 1.0x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

.. note::
    Note that ``quantize = True`` returns a quantized model with 8 bit
    weights. Quantized models only support inference and run on CPUs.
    GPU inference is not yet supported.

Args:
    weights (:class:`~torchvision.models.quantization.ShuffleNet_V2_X1_0_QuantizedWeights` or :class:`~torchvision.models.ShuffleNet_V2_X1_0_Weights`, optional): The
        pretrained weights for the model. See
        :class:`~torchvision.models.quantization.ShuffleNet_V2_X1_0_QuantizedWeights` 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.
    quantize (bool, optional): If True, return a quantized version of the model.
        Default is False.
    **kwargs: parameters passed to the ``torchvision.models.quantization.ShuffleNet_V2_X1_0_QuantizedWeights``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/quantization/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.quantization.ShuffleNet_V2_X1_0_QuantizedWeights
    :members:

.. autoclass:: torchvision.models.ShuffleNet_V2_X1_0_Weights
    :members:
    :noindex:
r|   r}   r~   r¶   )r¹   ét   éè   iÐ  r½   )r   r   r¾   rŒ   r¿   s   $$$,r(   Úshufflenet_v2_x1_0rÇ     óO   € ÷d 7?Õ2ÔD^×fÑfÐgnÓo€GÜÚÒ,ñØ6=ðØHPðØ[cðØgmñð r+   Úquantized_shufflenet_v2_x1_5c                 ór   € V P                  R R4      '       d   \        P                  # \        P                  # r­   )r®   r   r¡   r   r    r¯   s   &r(   r°   r°   J  r±   r+   c          
      óŒ   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\        R\
        R\        /# r³   )r   r   r   r   rc   r   r   )r&   s   "r(   r)   r)   Q  r´   r+   c           	     óv   € V'       d   \         M\        P                  V 4      p \        . RO. RO3RV RVRV/VB # )aå  
Constructs a ShuffleNetV2 with 1.5x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

.. note::
    Note that ``quantize = True`` returns a quantized model with 8 bit
    weights. Quantized models only support inference and run on CPUs.
    GPU inference is not yet supported.

Args:
    weights (:class:`~torchvision.models.quantization.ShuffleNet_V2_X1_5_QuantizedWeights` or :class:`~torchvision.models.ShuffleNet_V2_X1_5_Weights`, optional): The
        pretrained weights for the model. See
        :class:`~torchvision.models.quantization.ShuffleNet_V2_X1_5_QuantizedWeights` 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.
    quantize (bool, optional): If True, return a quantized version of the model.
        Default is False.
    **kwargs: parameters passed to the ``torchvision.models.quantization.ShuffleNet_V2_X1_5_QuantizedWeights``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/quantization/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.quantization.ShuffleNet_V2_X1_5_QuantizedWeights
    :members:

.. autoclass:: torchvision.models.ShuffleNet_V2_X1_5_Weights
    :members:
    :noindex:
r|   r}   r~   r¶   )r¹   é°   i`  iÀ  r½   )r   r   r¾   rŒ   r¿   s   $$$,r(   Úshufflenet_v2_x1_5rÎ   F  rÈ   r+   Úquantized_shufflenet_v2_x2_0c                 ór   € V P                  R R4      '       d   \        P                  # \        P                  # r­   )r®   r   r¡   r   r    r¯   s   &r(   r°   r°   ‚  r±   r+   c          
      óŒ   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\        R\
        R\        /# r³   )r   r   r   r   rc   r   r   )r&   s   "r(   r)   r)   ‰  r´   r+   c           	     óv   € V'       d   \         M\        P                  V 4      p \        . RO. RO3RV RVRV/VB # )aå  
Constructs a ShuffleNetV2 with 2.0x output channels, as described in
`ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
<https://arxiv.org/abs/1807.11164>`__.

.. note::
    Note that ``quantize = True`` returns a quantized model with 8 bit
    weights. Quantized models only support inference and run on CPUs.
    GPU inference is not yet supported.

Args:
    weights (:class:`~torchvision.models.quantization.ShuffleNet_V2_X2_0_QuantizedWeights` or :class:`~torchvision.models.ShuffleNet_V2_X2_0_Weights`, optional): The
        pretrained weights for the model. See
        :class:`~torchvision.models.quantization.ShuffleNet_V2_X2_0_QuantizedWeights` 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.
    quantize (bool, optional): If True, return a quantized version of the model.
        Default is False.
    **kwargs: parameters passed to the ``torchvision.models.quantization.ShuffleNet_V2_X2_0_QuantizedWeights``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/quantization/shufflenetv2.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.quantization.ShuffleNet_V2_X2_0_QuantizedWeights
    :members:

.. autoclass:: torchvision.models.ShuffleNet_V2_X2_0_Weights
    :members:
    :noindex:
r|   r}   r~   r¶   )r¹   éô   iè  iÐ  i   )r   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   rU   Útorch.nnr0   r   Útorchvision.modelsr	   Útransforms._presetsr
   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   r   r   r   r   Úutilsr   r   r   Ú__all__ÚInvertedResidualr   ÚShuffleNetV2r   rŒ   rŸ   r   r   r   r   rÀ   rÇ   rÎ   rÔ   rž   r+   r(   Ú<module>rá      s  ðÝ ß 'Ñ 'ã Ý Ý Ý +å 6ß 7Ñ 7Ý (ß C÷ó ÷ @Ñ ?ò
€ô ,×"?Ñ"?ô ô"#˜l×7Ñ7ô #õLð6 �ØÐ&ØˆxØÐtØð ð	€ô#¨+ô #ô*#¨+ô #ô*#¨+ô #ô,#¨+ô #ñ, Ð3Ô4Ùàñ	
ðô	ð*à`dð*ð ð*ð ö	*ó	ó 5ð*ñZ Ð3Ô4Ùàñ	
ðô	ð*à`dð*ð ð*ð ö	*ó	ó 5ð*ñZ Ð3Ô4Ùàñ	
ðô	ð*à`dð*ð ð*ð ö	*ó	ó 5ð*ñZ Ð3Ô4Ùàñ	
ðô	ð*à`dð*ð ð*ð ö	*ó	ó 5ò*r+   