ó
    Eñi‡  ã                   ó�  • S SK Jr  S SKJrJrJr  S SKrS SKJr  S SKJ	r	  SSK
Jr  SSKJr  S	S
KJrJrJr  S	SKJr  S	SKJrJr  / SQr " S S\R0                  5      r " S S\R4                  5      r " S S\R4                  5      r " S S\5      r\" 5       \" S\R<                  4S9SSS.S\\   S\S\S\4S jj5       5       r g)é    )Úpartial)ÚAnyÚCallableÚOptionalN)Únn)ÚConv3dNormActivationé   )ÚVideoClassification)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_KINETICS400_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚS3DÚS3D_WeightsÚs3dc                   ób   ^ • \ rS rSrS\S\S\S\S\S\S\R                  4   4U 4S	 jjrS
r	U =r
$ )ÚTemporalSeparableConvé   Ú	in_planesÚ
out_planesÚkernel_sizeÚstrideÚpaddingÚ
norm_layer.c                 óx   >• [         TU ]  [        UUSX34SXD4SXU4SUS9[        UUUSS4USS4USS4SUS95        g )Né   r   F)r   r   r   Úbiasr   )ÚsuperÚ__init__r   )Úselfr   r   r   r   r   r   Ú	__class__s          €ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/models/video/s3d.pyr#   ÚTemporalSeparableConv.__init__   sp   ø€ ô 	‰ÑÜ ØØØ Ð9Ø˜6Ð*Ø˜GÐ-ØØ%ñô !ØØØ(¨!¨QÐ/Ø  1�~Ø  ! Q˜ØØ%ñõ	
ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úintr   r   ÚModuler#   Ú__static_attributes__Ú__classcell__©r%   s   @r&   r   r      sT   ø† ð
àð
ð ð
ð ð	
ð
 ð
ð ð
ð ˜S "§)¡)˜^Ñ,÷
õ 
r(   r   c                   óp   ^ • \ rS rSrS\S\S\S\S\S\S\S	\S
\R                  4   4U 4S jjrS r	Sr
U =r$ )ÚSepInceptionBlock3Dé6   r   Úb0_outÚb1_midÚb1_outÚb2_midÚb2_outÚb3_outr   .c	                 ó|  >• [         T	U ]  5         [        XSSUS9U l        [        R
                  " [        XSSUS9[        X4SSSUS95      U l        [        R
                  " [        XSSUS9[        XVSSSUS95      U l        [        R
                  " [        R                  " SSSS9[        XSSUS95      U l
        g )Nr    ©r   r   r   r	   )r   r   r   r   ©r	   r	   r	   ©r   r   r   )r"   r#   r   Úbranch0r   Ú
Sequentialr   Úbranch1Úbranch2Ú	MaxPool3dÚbranch3)
r$   r   r6   r7   r8   r9   r:   r;   r   r%   s
            €r&   r#   ÚSepInceptionBlock3D.__init__7   s¹   ø€ ô 	‰ÑÔä+¨IÈ1ÐUVÐcmÑnˆŒÜ—}’}Ü  ÀÈ!ÐXbÑcÜ! &¸aÈÐSTÐakÑló
ˆŒô —}’}Ü  ÀÈ!ÐXbÑcÜ! &¸aÈÐSTÐakÑló
ˆŒô —}’}Ü�LŠL Y°qÀ!ÑDÜ  ÀÈ!ÐXbÑcó
ˆ�r(   c                 óÀ   • U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R
                  " X#XE4S5      nU$ )Nr    )r@   rB   rC   rE   ÚtorchÚcat)r$   ÚxÚx0Úx1Úx2Úx3Úouts          r&   ÚforwardÚSepInceptionBlock3D.forwardR   sP   € Ø�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆÜ�iŠi˜ Ð(¨!Ó,ˆàˆ
r(   )r@   rB   rC   rE   )r*   r+   r,   r-   r.   r   r   r/   r#   rP   r0   r1   r2   s   @r&   r4   r4   6   sm   ø† ð
àð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð ˜S "§)¡)˜^Ñ,÷
÷6ð r(   r4   c            
       óˆ   ^ • \ rS rSrSr   SS\S\S\\S\	R                  R                  4      SS4U 4S	 jjjrS
 rSrU =r$ )r   é\   a;  S3D main class.

Args:
    num_class (int): number of classes for the classification task.
    dropout (float): dropout probability.
    norm_layer (Optional[Callable]): Module specifying the normalization layer to use.

Inputs:
    x (Tensor): batch of videos with dimensions (batch, channel, time, height, width)
NÚnum_classesÚdropoutr   .Úreturnc                 óŽ  >• [         TU ]  5         [        U 5        Uc  [        [        R
                  SSS9n[        R                  " [        SSSSSU5      [        R                  " SSS	S
9[        SSSSUS9[        SSSSSU5      [        R                  " SSS	S
9[        SSSSSSSU5      [        SSSSSSSU5      [        R                  " SSSS
9[        SSSSSSSU5      [        SSSSSSSU5      [        SSSSSSSU5      [        SSSSSSSU5      [        S SSS!SSSU5      [        R                  " SSS"S
9[        S#SSS!SSSU5      [        S#S$SS$SSSU5      5      U l        [        R                  " S%SS&9U l        [        R                  " [        R                  " US'9[        R                  " S(USSS)S*95      U l        g )+Ngü©ñÒMbP?)ÚepsÚmomentumr	   é@   é   r   )r    r	   r	   )r    r   r   )r   r    r    r?   r    r=   éÀ   é`   é€   é   é    é   r>   )r   r   r   )r    r    r    ià  éÐ   é0   i   é    ép   éà   é   é�   i   i  i@  )r   r   r   i@  i€  )r   r[   r[   )r   r   )Úpi   T)r   r   r!   )r"   r#   r   r   r   ÚBatchNorm3drA   r   rD   r   r4   ÚfeaturesÚ	AvgPool3dÚavgpoolÚDropoutÚConv3dÚ
classifier)r$   rT   rU   r   r%   s       €r&   r#   ÚS3D.__init__h   sÇ  ø€ ô 	‰ÑÔÜ˜DÔ!àÑÜ ¤§¡°UÀUÑKˆJäŸšÜ! ! R¨¨A¨q°*Ó=Ü�LŠL Y°yÈ)ÑTÜ ØØØØØ%ñô " " c¨1¨a°°JÓ?Ü�LŠL Y°yÈ)ÑTÜ  R¨¨S°"°b¸"¸jÓIÜ  S¨#¨s°B¸¸BÀ
ÓKÜ�LŠL Y°yÈ)ÑTÜ  S¨"¨c°2°r¸2¸zÓJÜ  S¨#¨s°B¸¸BÀ
ÓKÜ  S¨#¨s°B¸¸BÀ
ÓKÜ  S¨#¨s°B¸¸BÀ
ÓKÜ  S¨#¨s°B¸¸SÀ*ÓMÜ�LŠL Y°yÈ)ÑTÜ  S¨#¨s°B¸¸SÀ*ÓMÜ  S¨#¨s°B¸¸SÀ*ÓMó-
ˆŒô0 —|’|°	À!ÑDˆŒÜŸ-š-Ü�JŠJ˜Ñ!Ü�IŠI�d˜K°Q¸qÀtÑLó
ˆ�r(   c                 ó–   • U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " USS9nU$ )N)r   r	   é   )Údim)rk   rm   rp   rH   Úmean)r$   rJ   s     r&   rP   ÚS3D.forward’   s@   € Ø�M‰M˜!ÓˆØ�L‰L˜‹OˆØ�O‰O˜AÓˆÜ�JŠJ�q˜iÑ(ˆØˆr(   )rm   rp   rk   )i�  gš™™™™™É?N)r*   r+   r,   r-   Ú__doc__r.   Úfloatr   r   rH   r   r/   r#   rP   r0   r1   r2   s   @r&   r   r   \   se   ø† ñ	ð ØØ?Cñ	(
àð(
ð ð(
ð ˜X c¨5¯8©8¯?©?Ð&:Ñ;Ñ<ð	(
ð
 
÷(
ð (
÷Tð r(   r   c                   óR   • \ rS rSr\" S\" \SSS9SS\SSS	S
SSS.0SSS.	S9r\r	Sr
g)r   éš   z4https://download.pytorch.org/models/s3d-d76dad2f.pth)rf   rf   )ra   ra   )Ú	crop_sizeÚresize_sizeé   zOhttps://github.com/pytorch/vision/tree/main/references/video_classification#s3dz®The weights aim to approximate the accuracy of the paper. The accuracies are estimated on clip-level with parameters `frame_rate=15`, `clips_per_video=1`, and `clip_len=128`.i0ô~ zKinetics-400gd;ßO�Q@g33333V@)zacc@1zacc@5g´Èv¾Ÿú1@gF¶óýÔø?@)	Úmin_sizeÚmin_temporal_sizeÚ
categoriesÚrecipeÚ_docsÚ
num_paramsÚ_metricsÚ_opsÚ
_file_size)ÚurlÚ
transformsÚmetar)   N)r*   r+   r,   r-   r   r   r
   r   ÚKINETICS400_V1ÚDEFAULTr0   r)   r(   r&   r   r   š   s`   † ÙØBÙØØ Ø"ñ
ð #Ø!#Ø1Øgð\ð "àØ#Ø#ñ!ðð Ø ñ#
ñ€Nð6 ƒGr(   r   Ú
pretrained)ÚweightsT)r�   Úprogressr�   rŽ   ÚkwargsrV   c                 óÖ   • [         R                  U 5      n U b#  [        US[        U R                  S   5      5        [        S0 UD6nU b  UR                  U R                  USS95        U$ )a_  Construct Separable 3D CNN model.

Reference: `Rethinking Spatiotemporal Feature Learning <https://arxiv.org/abs/1712.04851>`__.

.. betastatus:: video module

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

.. autoclass:: torchvision.models.video.S3D_Weights
    :members:
rT   r€   T)rŽ   Ú
check_hashr)   )r   Úverifyr   Úlenr‰   r   Úload_state_dictÚget_state_dict)r�   rŽ   r�   Úmodels       r&   r   r   ¹   si   € ô0 × Ñ  Ó)€GàÑÜ˜f m´S¸¿¹ÀlÑ9SÓ5TÔUä‰M�&‰M€EàÑØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÐXÔYà€Lr(   )!Ú	functoolsr   Útypingr   r   r   rH   r   Útorchvision.ops.miscr   Útransforms._presetsr
   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__rA   r   r/   r4   r   r   rŠ   Úboolr   r)   r(   r&   Ú<module>r¡      sÇ   ðÝ ß *Ñ *ã Ý Ý 5å 6Ý (ß 7Ñ 7Ý +ß Cò€ô
˜BŸM™Mô 
ô@#˜"Ÿ)™)ô #ôL;ˆ"�)‰)ô ;ô|�+ô ñ> ÓÙ ,°×0JÑ0JÐ!KÑLØ,0À4ò  �H˜[Ñ)ð  ¸Dð  ÐSVð  Ð[^ô  ó Mó ñ r(   