§
    ù²Åjg„  ã                   óJ  — d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlZd dlZd dlmZ ddlmZmZ ddlmZ ddlmZ d	d
lmZmZmZ d	dlmZ d	dlmZm Z  g d¢Z!e G d„ d¦  «        ¦   «         Z"dee#         de#fd„Z$dej%        de#de#deej%        e#f         fd„Z&dej%        de#de#de#dej%        f
d„Z'ej(         )                    d¦  «         ej(         )                    d¦  «          G d„ dej*        ¦  «        Z+dej%        de#dej%        fd„Z,d ej%        d!ej%        d"ee#e#e#f         d#ee#e#e#f         d$ej%        d%ej%        d&ej%        dej%        fd'„Z-dej%        d(ej%        d)e.fd*„Z/ej(         )                    d+¦  «         ej(         )                    d,¦  «          G d-„ d.ej*        ¦  «        Z0 G d/„ d0ej*        ¦  «        Z1 G d1„ d2ej*        ¦  «        Z2 G d3„ d4ej*        ¦  «        Z3d5e	e"         d6e4d7e
e         d8e.d9ede3fd:„Z5 G d;„ d<e¦  «        Z6 G d=„ d>e¦  «        Z7 e¦   «          e d?e6j8        f¬@¦  «        ddAdBœd7e
e6         d8e.d9ede3fdC„¦   «         ¦   «         Z9 e¦   «          e d?e7j8        f¬@¦  «        ddAdBœd7e
e7         d8e.d9ede3fdD„¦   «         ¦   «         Z:dS )Eé    N)Ú	dataclass)Úpartial)ÚAnyÚCallableÚDictÚListÚOptionalÚSequenceÚTupleé   )ÚMLPÚStochasticDepth)ÚVideoClassification)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_KINETICS400_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚMViTÚMViT_V1_B_WeightsÚ	mvit_v1_bÚMViT_V2_S_WeightsÚ	mvit_v2_sc                   ó†   — e Zd ZU eed<   eed<   eed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   dS )	ÚMSBlockConfigÚ	num_headsÚinput_channelsÚoutput_channelsÚkernel_qÚ	kernel_kvÚstride_qÚ	stride_kvN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__r   © ó    úNC:\Projects\Historical\venv\Lib\site-packages\torchvision/models/video/mvit.pyr   r      ss   € € € € € € à€N€N�NØÐÐÑØÐÐÑØ�3ŒiÐÐÑØ�CŒyÐÐÑØ�3ŒiÐÐÑØ�CŒyÐÐÑÐÐr,   r   ÚsÚreturnc                 ó   — d}| D ]}||z  }Œ|S ©Né   r+   )r.   ÚproductÚvs      r-   Ú_prodr5   &   s&   € Ø€GØð ð ˆØ�1‰ˆˆØ€Nr,   ÚxÚ
target_dimÚ
expand_dimc                 óª   — |                       ¦   «         }||dz
  k    r|                      |¦  «        } n||k    rt          d| j        › �¦  «        ‚| |fS )Nr2   zUnsupported input dimension )ÚdimÚ	unsqueezeÚ
ValueErrorÚshape©r6   r7   r8   Ú
tensor_dims       r-   Ú
_unsqueezer@   -   s_   € Ø—’‘”€JØ�Z !‘^Ò#Ð#Ø�KŠK˜
Ñ#Ô#ˆˆØ	�zÒ	!Ð	!ÝÐA¸¼ÐAÐAÑBÔBÐBØˆjˆ=Ðr,   r?   c                 óB   — ||dz
  k    r|                       |¦  «        } | S r1   )Úsqueezer>   s       r-   Ú_squeezerC   6   s'   € Ø�Z !‘^Ò#Ð#Ø�IŠI�jÑ!Ô!ˆØ€Hr,   r@   rC   c                   óÌ   ‡ — e Zd Z	 	 ddej        deej                 deej                 deddf
ˆ fd„Zd	ej	        d
e
eeef         de
ej	        e
eeef         f         fd„Zˆ xZS )ÚPoolNFÚpoolÚnormÚ
activationÚnorm_before_poolr/   c                 óò   •— t          ¦   «                              ¦   «          || _        g }|�|                     |¦  «         |�|                     |¦  «         |rt	          j        |Ž nd | _        || _        d S )N)ÚsuperÚ__init__rF   ÚappendÚnnÚ
SequentialÚnorm_actrI   )ÚselfrF   rG   rH   rI   ÚlayersÚ	__class__s         €r-   rL   zPool.__init__A   s}   ø€ õ 	‰Œ×ÒÑÔÐØˆŒ	ØˆØÐØ�MŠM˜$ÑÔÐØÐ!Ø�MŠM˜*Ñ%Ô%Ð%Ø28ÐB�œ vÐ.Ð.¸dˆŒØ 0ˆÔÐÐr,   r6   Úthwc                 ó¤  — t          |dd¦  «        \  }}t          j        |dd¬¦  «        \  }}|                     dd¦  «        }|j        d d…         \  }}}|                     ||z  |f|z   ¦  «                             ¦   «         }| j        r| j        �|                      |¦  «        }|  	                    |¦  «        }|j        dd …         \  }}	}
|                     |||d¦  «                             dd¦  «        }t          j
        ||fd¬¦  «        }| j        s| j        �|                      |¦  «        }t          |dd|¦  «        }|||	|
ffS )	Né   r2   ©r2   r   )Úindicesr:   r   éÿÿÿÿ©r:   )r@   ÚtorchÚtensor_splitÚ	transposer=   ÚreshapeÚ
contiguousrI   rP   rF   ÚcatrC   )rQ   r6   rT   r?   Úclass_tokenÚBÚNÚCÚTÚHÚWs              r-   ÚforwardzPool.forwardR   sW  € Ý" 1 a¨Ñ+Ô+‰ˆˆ:õ Ô+¨A°tÀÐCÑCÔC‰ˆ�QØ�KŠK˜˜1ÑÔˆØ”'˜"˜1˜"”+‰ˆˆ1ˆaØ�IŠI�q˜1‘u˜a�j 3Ñ&Ñ'Ô'×2Ò2Ñ4Ô4ˆð Ô ð 	! T¤]Ð%>Ø—’˜aÑ Ô ˆAð �IŠI�a‰LŒLˆØ”'˜!˜"˜"”+‰ˆˆ1ˆaØ�IŠI�a˜˜A˜rÑ"Ô"×,Ò,¨Q°Ñ2Ô2ˆÝŒI�{ AÐ&¨AÐ.Ñ.Ô.ˆàÔ$ð 	!¨¬Ð)BØ—’˜aÑ Ô ˆAå�Q˜˜1˜jÑ)Ô)ˆØ�1�a˜�)ˆ|Ðr,   )NF)r&   r'   r(   rN   ÚModuler	   ÚboolrL   r[   ÚTensorr   r)   rh   Ú__classcell__©rS   s   @r-   rE   rE   @   sÜ   ø€ € € € € ð
 +/Ø!&ð1ð 1àŒið1ð �r”yÔ!ð1ð ˜RœYÔ'ð	1ð
 ð1ð 
ð1ð 1ð 1ð 1ð 1ð 1ð"˜œð ¨E°#°s¸C°-Ô,@ð ÀUÈ5Ì<ÐY^Ð_bÐdgÐilÐ_lÔYmÐKmÔEnð ð ð ð ð ð ð ð r,   rE   Ú	embeddingÚdc                 ó  — | j         d         |k    r| S t          j                             |                      dd¦  «                             d¦  «        |d¬¦  «                             d¦  «                             dd¦  «        S )Nr   r2   Úlinear)ÚsizeÚmode)r=   rN   Ú
functionalÚinterpolateÚpermuter;   rB   )rn   ro   s     r-   Ú_interpolaterw   l   s|   € Ø„�qÔ˜QÒÐØÐõ 	Œ×!Ò!Ø×Ò˜a Ñ#Ô#×-Ò-¨aÑ0Ô0ØØð 	"ñ 	
ô 	
÷
 
Š�‰Œß	Š��A‰Œðr,   ÚattnÚqÚq_thwÚk_thwÚ	rel_pos_hÚ	rel_pos_wÚ	rel_pos_tc                 ó¾  — |\  }}}	|\  }
}}t          dt          ||¦  «        z  dz
  ¦  «        }t          dt          |	|¦  «        z  dz
  ¦  «        }t          dt          ||
¦  «        z  dz
  ¦  «        }t          ||z  d¦  «        }t          ||z  d¦  «        }t          j        |¦  «        d d …d f         |z  t          j        |¦  «        d d d …f         d|z
  z   |z  z
  }t          ||	z  d¦  «        }t          |	|z  d¦  «        }t          j        |	¦  «        d d …d f         |z  t          j        |¦  «        d d d …f         d|z
  z   |z  z
  }t          |
|z  d¦  «        }t          ||
z  d¦  «        }t          j        |¦  «        d d …d f         |z  t          j        |
¦  «        d d d …f         d|
z
  z   |z  z
  }t	          ||¦  «        }t	          ||¦  «        }t	          ||¦  «        }||                     ¦   «                  }||                     ¦   «                  }||                     ¦   «                  }|j        \  }}}}|d d …d d …dd …f                              |||||	|¦  «        } t          j        d| |¦  «        }!t          j        d| |¦  «        }"|  	                    dddddd	¦  «                             |||z  |z  |	z  |¦  «        } t          j
        | |                     dd¦  «        ¦  «                             dd¦  «        }#|#                     ||||	||
¦  «         	                    dddddd	¦  «        }#|!d d …d d …d d …d d …d d …d d d …d f         |"d d …d d …d d …d d …d d …d d d d …f         z   |#d d …d d …d d …d d …d d …d d …d d f         z                        ||||z  |	z  |
|z  |z  ¦  «        }$| d d …d d …dd …dd …fxx         |$z  cc<   | S )
Nr   r2   ç      ð?zbythwc,hkc->bythwkzbythwc,wkc->bythwkr   r   rV   é   )r)   Úmaxr[   Úarangerw   Úlongr=   r^   Úeinsumrv   Úmatmulr]   Úview)%rx   ry   rz   r{   r|   r}   r~   Úq_tÚq_hÚq_wÚk_tÚk_hÚk_wÚdhÚdwÚdtÚ	q_h_ratioÚ	k_h_ratioÚdist_hÚ	q_w_ratioÚ	k_w_ratioÚdist_wÚ	q_t_ratioÚ	k_t_ratioÚdist_tÚRhÚRwÚRtrb   Ún_headÚ_r:   Úr_qÚrel_h_qÚrel_w_qÚrel_q_tÚrel_poss%                                        r-   Ú_add_rel_posr¤   {   sJ  € ð �M€CˆˆcØ�M€CˆˆcÝ	ˆQ•�S˜#‘”Ñ Ñ"Ñ	#Ô	#€BÝ	ˆQ•�S˜#‘”Ñ Ñ"Ñ	#Ô	#€BÝ	ˆQ•�S˜#‘”Ñ Ñ"Ñ	#Ô	#€Bõ �C˜#‘I˜sÑ#Ô#€IÝ�C˜#‘I˜sÑ#Ô#€IÝŒ\˜#ÑÔ˜q˜q˜q $˜wÔ'¨)Ñ3µu´|ÀCÑ7HÔ7HÈÈqÈqÈqÈÔ7QÐUXÐ[^ÑU^Ñ7_ÐclÑ6lÑl€FÝ�C˜#‘I˜sÑ#Ô#€IÝ�C˜#‘I˜sÑ#Ô#€IÝŒ\˜#ÑÔ˜q˜q˜q $˜wÔ'¨)Ñ3µu´|ÀCÑ7HÔ7HÈÈqÈqÈqÈÔ7QÐUXÐ[^ÑU^Ñ7_ÐclÑ6lÑl€FÝ�C˜#‘I˜sÑ#Ô#€IÝ�C˜#‘I˜sÑ#Ô#€IÝŒ\˜#ÑÔ˜q˜q˜q $˜wÔ'¨)Ñ3µu´|ÀCÑ7HÔ7HÈÈqÈqÈqÈÔ7QÐUXÐ[^ÑU^Ñ7_ÐclÑ6lÑl€Fõ ˜Y¨Ñ+Ô+€IÝ˜Y¨Ñ+Ô+€IÝ˜Y¨Ñ+Ô+€IØ	�6—;’;‘=”=Ô	!€BØ	�6—;’;‘=”=Ô	!€BØ	�6—;’;‘=”=Ô	!€BàœÑ€A€vˆq�#à
ˆAˆAˆAˆqˆqˆq�!�"�"ˆHŒ+×
Ò
˜a ¨¨c°3¸Ñ
<Ô
<€CÝŒlÐ/°°bÑ9Ô9€GÝŒlÐ/°°bÑ9Ô9€Gà
�+Š+�a˜˜A˜q ! QÑ
'Ô
'×
/Ò
/°°Q¸±ZÀ#Ñ5EÈÑ5KÈSÑ
QÔ
Q€CåŒl˜3 §¢¨Q°Ñ 2Ô 2Ñ3Ô3×=Ò=¸aÀÑCÔC€Gà�lŠl˜1˜f c¨3°°SÑ9Ô9×AÒAÀ!ÀQÈÈ1ÈaÐQRÑSÔS€Gð 	����1�1�1�a�a�a˜˜˜˜A˜A˜A˜t Q Q Q¨Ð,Ô-Ø
�!�!�!�Q�Q�Q˜˜˜˜1˜1˜1˜a˜a˜a  t¨Q¨Q¨QÐ.Ô
/ñ	0à
�!�!�!�Q�Q�Q˜˜˜˜1˜1˜1˜a˜a˜a    D¨$Ð.Ô
/ñ	0÷ ‚gˆa�˜˜s™ S™¨#°©)°c©/Ñ:Ô:ð	 ð 	ˆˆˆˆAˆAˆAˆqˆrˆr�1�2�2ˆÐÐÔ˜'Ñ!ÐÐÑà€Kr,   ÚshortcutÚresidual_with_cls_embedc           	      ó’   — |r|                       |¦  «         n.| d d …d d …dd …d d …fxx         |d d …d d …dd …d d …f         z  cc<   | S r1   )Úadd_)r6   r¥   r¦   s      r-   Ú_add_shortcutr©   ·   so   € Øð 0Ø	�ŠˆxÑÔÐÐà	ˆ!ˆ!ˆ!ˆQˆQˆQ����A�A�Aˆ+ˆˆŒ˜( 1 1 1 a a a¨¨¨¨Q¨Q¨Q ;Ô/Ñ/ˆˆ‰Ø€Hr,   r¤   r©   c                   ó  ‡ — e Zd Zdej        fdee         dedededee         dee         dee         d	ee         d
edededede	dej
        f         ddfˆ fd„Zdej        deeeef         deej        eeeef         f         fd„Zˆ xZS )ÚMultiscaleAttentionç        Ú
input_sizeÚ	embed_dimÚ
output_dimr   r"   r#   r$   r%   Úresidual_poolr¦   Úrel_pos_embedÚdropoutÚ
norm_layer.r/   Nc                 ó¶  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        dt          j        | j        ¦  «        z  | _        |	| _	        |
| _
        t          j        |d|z  ¦  «        | _        t          j        ||¦  «        g}|dk    r)|                     t          j        |d¬¦  «        ¦  «         t          j        |Ž | _        d | _        t'          |¦  «        dk    st'          |¦  «        dk    rWd„ |D ¦   «         }t)          t          j        | j        | j        |||| j        d¬	¦  «         || j        ¦  «        ¦  «        | _        d | _        d | _        t'          |¦  «        dk    st'          |¦  «        dk    r¢d
„ |D ¦   «         }t)          t          j        | j        | j        |||| j        d¬	¦  «         || j        ¦  «        ¦  «        | _        t)          t          j        | j        | j        |||| j        d¬	¦  «         || j        ¦  «        ¦  «        | _        d | _        d | _        d | _        |�r‚t7          |dd …         ¦  «        }t9          |¦  «        dk    r||d         z  n|}t9          |¦  «        dk    r||d         z  n|}dt7          ||¦  «        z  dz
  }d|d         z  dz
  }t          j        t=          j        || j        ¦  «        ¦  «        | _        t          j        t=          j        || j        ¦  «        ¦  «        | _        t          j        t=          j        || j        ¦  «        ¦  «        | _        t          j          !                    | j        d¬¦  «         t          j          !                    | j        d¬¦  «         t          j          !                    | j        d¬¦  «         d S d S )Nr€   r   r¬   T©Úinplacer2   c                 ó2   — g | ]}t          |d z  ¦  «        ‘ŒS ©r   ©r)   )Ú.0ry   s     r-   ú
<listcomp>z0MultiscaleAttention.__init__.<locals>.<listcomp>å   s"   € Ð7Ð7Ð7¨�˜Q !™V™œÐ7Ð7Ð7r,   F)ÚstrideÚpaddingÚgroupsÚbiasc                 ó2   — g | ]}t          |d z  ¦  «        ‘ŒS r¸   r¹   )rº   Úkvs     r-   r»   z0MultiscaleAttention.__init__.<locals>.<listcomp>ö   s"   € Ð;Ð;Ð;¨2�#˜b A™g™,œ,Ð;Ð;Ð;r,   r   r   ç{®Gáz”?©Ústd)"rK   rL   r®   r¯   r   Úhead_dimÚmathÚsqrtÚscalerr°   r¦   rN   ÚLinearÚqkvrM   ÚDropoutrO   ÚprojectÚpool_qr5   rE   ÚConv3dÚpool_kÚpool_vr|   r}   r~   r‚   ÚlenÚ	Parameterr[   ÚzerosÚinitÚtrunc_normal_)rQ   r­   r®   r¯   r   r"   r#   r$   r%   r°   r¦   r±   r²   r³   rR   Ú	padding_qÚ
padding_kvrr   Úq_sizeÚkv_sizeÚspatial_dimÚtemporal_dimrS   s                         €r-   rL   zMultiscaleAttention.__init__Ä   s©  ø€ õ  	‰Œ×ÒÑÔÐØ"ˆŒØ$ˆŒØ"ˆŒØ" iÑ/ˆŒØ�DœI d¤mÑ4Ô4Ñ4ˆŒØ*ˆÔØ'>ˆÔ$å”9˜Y¨¨J©Ñ7Ô7ˆŒÝ#%¤9¨Z¸Ñ#DÔ#DÐ"EˆØ�SŠ=ˆ=Ø�MŠM�"œ* W°dÐ;Ñ;Ô;Ñ<Ô<Ð<Ý”} fÐ-ˆŒà+/ˆŒÝ�‰?Œ?˜QÒÐ¥%¨¡/¤/°AÒ"5Ð"5Ø7Ð7¨hÐ7Ñ7Ô7ˆIÝÝ”	Ø”MØ”MØØ#Ø%Øœ=Øðñ ô ð �
˜4œ=Ñ)Ô)ñô ˆDŒKð ,0ˆŒØ+/ˆŒÝ�ÑÔ˜aÒÐ¥5¨Ñ#3Ô#3°aÒ#7Ð#7Ø;Ð;°Ð;Ñ;Ô;ˆJÝÝ”	Ø”MØ”MØØ$Ø&Øœ=Øðñ ô ð �
˜4œ=Ñ)Ô)ñô ˆDŒKõ Ý”	Ø”MØ”MØØ$Ø&Øœ=Øðñ ô ð �
˜4œ=Ñ)Ô)ñô ˆDŒKð 26ˆŒØ15ˆŒØ15ˆŒØñ 	<Ý�z ! " "”~Ñ&Ô&ˆDÝ,/°©M¬M¸AÒ,=Ð,=�T˜X aœ[Ñ(Ð(À4ˆFÝ.1°)©n¬n¸qÒ.@Ð.@�d˜i¨œlÑ*Ð*ÀdˆGØ�c &¨'Ñ2Ô2Ñ2°QÑ6ˆKØ˜z¨!œ}Ñ,¨qÑ0ˆLÝœ\­%¬+°kÀ4Ä=Ñ*QÔ*QÑRÔRˆDŒNÝœ\­%¬+°kÀ4Ä=Ñ*QÔ*QÑRÔRˆDŒNÝœ\­%¬+°lÀDÄMÑ*RÔ*RÑSÔSˆDŒNÝŒG×!Ò! $¤.°dÐ!Ñ;Ô;Ð;ÝŒG×!Ò! $¤.°dÐ!Ñ;Ô;Ð;ÝŒG×!Ò! $¤.°dÐ!Ñ;Ô;Ð;Ð;Ð;ð	<ð 	<r,   r6   rT   c           	      óž  — |j         \  }}}|                      |¦  «                             ||d| j        | j        ¦  «                             dd¦  «                             d¬¦  «        \  }}}| j        �|                      ||¦  «        \  }}	n|}	| j        �|                      ||¦  «        d         }| j	        �|  	                    ||¦  «        \  }}t          j        | j        |z  |                     dd¦  «        ¦  «        }
| j        �2| j        �+| j        �$t!          |
|||	| j        | j        | j        ¦  «        }
|
                     d¬¦  «        }
t          j        |
|¦  «        }| j        rt'          ||| j        ¦  «         |                     dd¦  «                             |d| j        ¦  «        }|                      |¦  «        }||fS )Nr   r2   r   rZ   r   rY   )r=   rÊ   r^   r   rÅ   r]   ÚunbindrÏ   rÐ   rÍ   r[   r†   rÈ   r|   r}   r~   r¤   Úsoftmaxr°   r©   r¦   r¯   rÌ   )rQ   r6   rT   rb   rc   rd   ry   Úkr4   r{   rx   s              r-   rh   zMultiscaleAttention.forward   s±  € Ø”'‰ˆˆ1ˆaØ—(’(˜1‘+”+×%Ò% a¨¨A¨t¬~¸t¼}ÑMÔM×WÒWÐXYÐ[\Ñ]Ô]×dÒdÐijÐdÑkÔk‰ˆˆ1ˆaàŒ;Ð"Ø—{’{ 1 cÑ*Ô*‰HˆAˆuˆuàˆEØŒ;Ð"Ø—’˜A˜sÑ#Ô# AÔ&ˆAØŒ;Ð"Ø—[’[  CÑ(Ô(‰FˆAˆsåŒ|˜DœK¨!™O¨Q¯[ª[¸¸AÑ->Ô->Ñ?Ô?ˆØŒ>Ð%¨$¬.Ð*DÈÌÐIcÝØØØØØ”Ø”Ø”ñô ˆDð �|Š| ˆ|Ñ#Ô#ˆåŒL˜˜qÑ!Ô!ˆØÔð 	>Ý˜!˜Q Ô <Ñ=Ô=Ð=Ø�KŠK˜˜1ÑÔ×%Ò% a¨¨T¬_Ñ=Ô=ˆØ�LŠL˜‰OŒOˆà�#ˆvˆr,   )r&   r'   r(   rN   Ú	LayerNormr   r)   rj   Úfloatr   ri   rL   r[   rk   r   rh   rl   rm   s   @r-   r«   r«   Ã   s]  ø€ € € € € ð Ø/1¬|ðZ<ð Z<à˜”IðZ<ð ðZ<ð ð	Z<ð
 ðZ<ð �s”)ðZ<ð ˜”9ðZ<ð �s”)ðZ<ð ˜”9ðZ<ð ðZ<ð "&ðZ<ð ðZ<ð ðZ<ð ˜S "¤)˜^Ô,ðZ<ð 
ðZ<ð Z<ð Z<ð Z<ð Z<ð Z<ðx ˜œð  ¨E°#°s¸C°-Ô,@ð  ÀUÈ5Ì<ÐY^Ð_bÐdgÐilÐ_lÔYmÐKmÔEnð  ð  ð  ð  ð  ð  ð  ð  r,   r«   c                   óÜ   ‡ — e Zd Zddej        fdee         dededededede	d	e	d
e
dej        f         ddfˆ fd„Zdej        deeeef         deej        eeeef         f         fd„Zˆ xZS )ÚMultiscaleBlockr¬   r­   Úcnfr°   r¦   r±   Úproj_after_attnr²   Ústochastic_depth_probr³   .r/   Nc
                 óZ  •— t          ¦   «                              ¦   «          || _        d | _        t	          |j        ¦  «        dk    rLd„ |j        D ¦   «         }
d„ |
D ¦   «         }t          t          j        |
|j        |¬¦  «        d ¦  «        | _        |r|j	        n|j
        } |	|j
        ¦  «        | _         |	|¦  «        | _        t          | j        t          j        ¦  «        | _        t!          ||j
        ||j        |j        |j        |j        |j        |||||	¬¦  «        | _        t-          |d|z  |j	        gt          j        |d ¬¦  «        | _        t3          |d¦  «        | _        d | _        |j
        |j	        k    r&t          j        |j
        |j	        ¦  «        | _        d S d S )	Nr2   c                 ó(   — g | ]}|d k    r|d z   n|‘ŒS rW   r+   )rº   r.   s     r-   r»   z,MultiscaleBlock.__init__.<locals>.<listcomp>U  s(   € ÐGÐGÐG°Q A¨¢E E˜1˜q™5˜5¨qÐGÐGÐGr,   c                 ó2   — g | ]}t          |d z  ¦  «        ‘ŒS r¸   r¹   )rº   rß   s     r-   r»   z,MultiscaleBlock.__init__.<locals>.<listcomp>V  s"   € Ð=Ð=Ð=¨A�C  Q¡™KœKÐ=Ð=Ð=r,   )r¼   r½   )	r"   r#   r$   r%   r±   r°   r¦   r²   r³   rV   )Úactivation_layerr²   r¶   Úrow)rK   rL   rå   Ú	pool_skipr5   r$   rE   rN   Ú	MaxPool3dr!   r    Únorm1Únorm2Ú
isinstanceÚBatchNorm1dÚneeds_transposalr«   r   r"   r#   r%   rx   r   ÚGELUÚmlpr   Ústochastic_depthrÌ   rÉ   )rQ   r­   rä   r°   r¦   r±   rå   r²   ræ   r³   Úkernel_skipÚpadding_skipÚattn_dimrS   s                €r-   rL   zMultiscaleBlock.__init__D  s´  ø€ õ 	‰Œ×ÒÑÔÐØ.ˆÔà.2ˆŒÝ�”ÑÔ Ò"Ð"ØGÐG¸#¼,ÐGÑGÔGˆKØ=Ð=°Ð=Ñ=Ô=ˆLÝ!Ý”˜[°´À|ÐTÑTÔTÐVZñô ˆDŒNð +:ÐQ�3Ô&Ð&¸sÔ?Qˆà�Z Ô 2Ñ3Ô3ˆŒ
Ø�Z Ñ)Ô)ˆŒ
Ý *¨4¬:µr´~Ñ FÔ FˆÔå'ØØÔØØŒMØ”\Ø”mØ”\Ø”mØ'Ø'Ø$;ØØ!ð
ñ 
ô 
ˆŒ	õ ØØ�‰\˜3Ô.Ð/ÝœWØØð
ñ 
ô 
ˆŒõ !0Ð0EÀuÑ MÔ MˆÔà,0ˆŒØÔ Ô!4Ò4Ð4Ýœ9 SÔ%7¸Ô9LÑMÔMˆDŒLˆLˆLð 5Ð4r,   r6   rT   c                 ó   — | j         r=|                      |                     dd¦  «        ¦  «                             dd¦  «        n|                      |¦  «        }|                      ||¦  «        \  }}| j        �| j        s|n|                      |¦  «        }| j        €|n|                      ||¦  «        d         }||                      |¦  «        z   }| j         r=|                      |                     dd¦  «        ¦  «                             dd¦  «        n|                      |¦  «        }| j        �| j        r|n|                      |¦  «        }||                      |  	                    |¦  «        ¦  «        z   |fS )Nr2   r   r   )
rò   rî   r]   rx   rÌ   rå   rì   rõ   rï   rô   )	rQ   r6   rT   Úx_norm1Úx_attnÚthw_newÚx_skipÚx_norm2Úx_projs	            r-   rh   zMultiscaleBlock.forward~  s`  € ØCGÔCXÐk�$—*’*˜QŸ[š[¨¨AÑ.Ô.Ñ/Ô/×9Ò9¸!¸QÑ?Ô?Ð?Ð^b×^hÒ^hÐijÑ^kÔ^kˆØŸ)š) G¨SÑ1Ô1‰ˆ�Ø”Ð%¨TÔ-AÐ%ˆAˆAÀtÇ|Â|ÐT[ÑG\ÔG\ˆØ”nÐ,��°$·.².ÀÀCÑ2HÔ2HÈÔ2KˆØ�T×*Ò*¨6Ñ2Ô2Ñ2ˆàCGÔCXÐk�$—*’*˜QŸ[š[¨¨AÑ.Ô.Ñ/Ô/×9Ò9¸!¸QÑ?Ô?Ð?Ð^b×^hÒ^hÐijÑ^kÔ^kˆØ”lÐ*¨dÔ.BÐ*��ÈÏÊÐU\ÑH]ÔH]ˆà˜×-Ò-¨d¯hªh°wÑ.?Ô.?Ñ@Ô@Ñ@À'ÐIÐIr,   )r&   r'   r(   rN   rà   r   r)   r   rj   rá   r   ri   rL   r[   rk   r   rh   rl   rm   s   @r-   rã   rã   C  s/  ø€ € € € € ð Ø'*Ø/1¬|ð8Nð 8Nà˜”Ið8Nð ð8Nð ð	8Nð
 "&ð8Nð ð8Nð ð8Nð ð8Nð  %ð8Nð ˜S "¤)˜^Ô,ð8Nð 
ð8Nð 8Nð 8Nð 8Nð 8Nð 8Nðt
J˜œð 
J¨E°#°s¸C°-Ô,@ð 
JÀUÈ5Ì<ÐY^Ð_bÐdgÐilÐ_lÔYmÐKmÔEnð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jr,   rã   c            
       óh   ‡ — e Zd Zdedeeef         dededdf
ˆ fd„Zdej        dej        fd	„Z	ˆ xZ
S )
ÚPositionalEncodingÚ
embed_sizeÚspatial_sizeÚtemporal_sizer±   r/   Nc                 ó.  •— t          ¦   «                              ¦   «          || _        || _        t	          j        t          j        |¦  «        ¦  «        | _        d | _	        d | _
        d | _        |s£t	          j        t          j        | j        d         | j        d         z  |¦  «        ¦  «        | _	        t	          j        t          j        | j        |¦  «        ¦  «        | _
        t	          j        t          j        |¦  «        ¦  «        | _        d S d S )Nr   r2   )rK   rL   r  r  rN   rÒ   r[   rÓ   ra   Úspatial_posÚtemporal_posÚ	class_pos)rQ   r  r  r  r±   rS   s        €r-   rL   zPositionalEncoding.__init__Œ  sæ   ø€ Ý‰Œ×ÒÑÔÐØ(ˆÔØ*ˆÔåœ<­¬°JÑ(?Ô(?Ñ@Ô@ˆÔØ37ˆÔØ48ˆÔØ15ˆŒØð 	CÝ!œ|­E¬K¸Ô8IÈ!Ô8LÈtÔO`ÐabÔOcÑ8cÐeoÑ,pÔ,pÑqÔqˆDÔÝ "¤­U¬[¸Ô9KÈZÑ-XÔ-XÑ YÔ YˆDÔÝœ\­%¬+°jÑ*AÔ*AÑBÔBˆDŒNˆNˆNð	Cð 	Cr,   r6   c                 óž  — | j                              |                     d¦  «        d¦  «                             d¦  «        }t	          j        ||fd¬¦  «        }| j        �ì| j        �å| j        �Þ| j        j	        \  }}t	          j
        | j        |d¬¦  «        }|                     | j                             d¦  «                             | j        dd¦  «                             d|¦  «        ¦  «         t	          j        | j                             d¦  «        |fd¬¦  «                             d¦  «        }|                     |¦  «         |S )Nr   rY   r2   rZ   )ra   Úexpandrr   r;   r[   r`   r  r  r  r=   Úrepeat_interleaver¨   r  r^   )rQ   r6   ra   Úhw_sizer  Úpos_embeddings         r-   rh   zPositionalEncoding.forwardš  s,  € ØÔ&×-Ò-¨a¯fªf°Q©i¬i¸Ñ<Ô<×FÒFÀqÑIÔIˆÝŒI�{ AÐ&¨AÐ.Ñ.Ô.ˆàÔÐ'¨DÔ,=Ð,IÈdÌnÐNhØ"&Ô"2Ô"8ÑˆG�ZÝ!Ô3°DÔ4EÀwÐTUÐVÑVÔVˆMØ×Ò˜tÔ/×9Ò9¸!Ñ<Ô<×CÒCÀDÔDVÐXZÐ\^Ñ_Ô_×gÒgÐhjÐlvÑwÔwÑxÔxÐxÝ!œI t¤~×'?Ò'?ÀÑ'BÔ'BÀMÐ&RÐXYÐZÑZÔZ×dÒdÐefÑgÔgˆMØ�FŠF�=Ñ!Ô!Ð!àˆr,   )r&   r'   r(   r)   r   rj   rL   r[   rk   rh   rl   rm   s   @r-   r  r  ‹  sœ   ø€ € € € € ðC 3ð C°e¸CÀ¸H´oð CÐVYð CÐjnð CÐswð Cð Cð Cð Cð Cð Cð˜œð ¨%¬,ð ð ð ð ð ð ð ð r,   r  c            $       ó:  ‡ — e Zd Z	 	 	 	 	 	 	 	 	 ddeeef         d	ed
ee         dedededededededede	e
dej        f                  de	e
dej        f                  deeeef         deeeef         deeeef         ddf"ˆ fd„Zdej        dej        fd„Zˆ xZS )r   ç      à?r¬   é�  N©r   é   r  ©r   rV   rV   ©r2   r   r   r  r  Úblock_settingr°   r¦   r±   rå   r²   Úattention_dropoutræ   Únum_classesÚblock.r³   Úpatch_embed_kernelÚpatch_embed_strideÚpatch_embed_paddingr/   c                 óÎ  •— t          ¦   «                              ¦   «          t          | ¦  «         t          |¦  «        }|dk    rt	          d¦  «        ‚|€t
          }|€t          t          j        d¬¦  «        }t          j	        d|d         j
        |||¬¦  «        | _        d„ t          |f|z   | j        j        ¦  «        D ¦   «         }t          |d         j
        |d	         |d
         f|d         |¬¦  «        | _        t          j        ¦   «         | _        t%          |¦  «        D ]s\  }}|
|z  |dz
  z  }| j                              ||||||||	||¬¦	  «	        ¦  «         t          |j        ¦  «        dk    rd„ t          ||j        ¦  «        D ¦   «         }Œt ||d         j        ¦  «        | _        t          j        t          j        |d¬¦  «        t          j        |d         j        |¦  «        ¦  «        | _        |                      ¦   «         D �]J}t9          |t          j        ¦  «        rmt          j                             |j        d¬¦  «         t9          |t          j        ¦  «        r,|j         �%t          j         !                    |j         d¦  «         ŒŠt9          |t          j        ¦  «        rY|j        �%t          j         !                    |j        d¦  «         |j         �%t          j         !                    |j         d¦  «         Œýt9          |t          ¦  «        r8| "                    ¦   «         D ]#}t          j                             |d¬¦  «         Œ$�ŒLdS )aÄ  
        MViT main class.

        Args:
            spatial_size (tuple of ints): The spacial size of the input as ``(H, W)``.
            temporal_size (int): The temporal size ``T`` of the input.
            block_setting (sequence of MSBlockConfig): The Network structure.
            residual_pool (bool): If True, use MViTv2 pooling residual connection.
            residual_with_cls_embed (bool): If True, the addition on the residual connection will include
                the class embedding.
            rel_pos_embed (bool): If True, use MViTv2's relative positional embeddings.
            proj_after_attn (bool): If True, apply the projection after the attention.
            dropout (float): Dropout rate. Default: 0.0.
            attention_dropout (float): Attention dropout rate. Default: 0.0.
            stochastic_depth_prob: (float): Stochastic depth rate. Default: 0.0.
            num_classes (int): The number of classes.
            block (callable, optional): Module specifying the layer which consists of the attention and mlp.
            norm_layer (callable, optional): Module specifying the normalization layer to use.
            patch_embed_kernel (tuple of ints): The kernel of the convolution that patchifies the input.
            patch_embed_stride (tuple of ints): The stride of the convolution that patchifies the input.
            patch_embed_padding (tuple of ints): The padding of the convolution that patchifies the input.
        r   z+The configuration parameter can't be empty.Ng�íµ ÷Æ°>)Úepsr   )Úin_channelsÚout_channelsÚkernel_sizer¼   r½   c                 ó   — g | ]
\  }}||z  ‘ŒS r+   r+   ©rº   rr   r¼   s      r-   r»   z!MViT.__init__.<locals>.<listcomp>ë  s    € ÐuÐuÐu©¨¨v�d˜f‘nÐuÐuÐur,   r2   r   )r  r  r  r±   r€   )	r­   rä   r°   r¦   r±   rå   r²   ræ   r³   c                 ó   — g | ]
\  }}||z  ‘ŒS r+   r+   r"  s      r-   r»   z!MViT.__init__.<locals>.<listcomp>
  s    € Ð_Ð_Ð_±°°v˜d f™nÐ_Ð_Ð_r,   rY   Trµ   rÂ   rÃ   r¬   )#rK   rL   r   rÑ   r<   rã   r   rN   rà   rÎ   r    Ú	conv_projÚzipr¼   r  Úpos_encodingÚ
ModuleListÚblocksÚ	enumeraterM   r$   r!   rG   rO   rË   rÉ   ÚheadÚmodulesrð   rÔ   rÕ   Úweightr¿   Ú	constant_Ú
parameters)rQ   r  r  r  r°   r¦   r±   rå   r²   r  ræ   r  r  r³   r  r  r  Útotal_stage_blocksr­   Ústage_block_idrä   Úsd_probÚmÚweightsrS   s                           €r-   rL   zMViT.__init__©  s_  ø€ õR 	‰Œ×ÒÑÔÐõ
 	˜DÑ!Ô!Ð!Ý  Ñ/Ô/ÐØ Ò"Ð"ÝÐJÑKÔKÐKàˆ=Ý#ˆEàÐÝ ¥¤°4Ð8Ñ8Ô8ˆJõ œØØ& qÔ)Ô8Ø*Ø%Ø'ð
ñ 
ô 
ˆŒð vÐu½¸mÐ=MÐP\Ñ=\Ð^bÔ^lÔ^sÑ9tÔ9tÐuÑuÔuˆ
õ /Ø$ QÔ'Ô6Ø$ Qœ-¨°A¬Ð7Ø$ Qœ-Ø'ð	
ñ 
ô 
ˆÔõ ”m‘o”oˆŒÝ#,¨]Ñ#;Ô#;ð 	`ð 	`ÑˆN˜Cà+¨nÑ<Ð@RÐUXÑ@XÑYˆGàŒK×ÒØ�Ø)ØØ"/Ø,CØ"/Ø$3Ø-Ø*1Ø)ð
ñ 
ô 
ñô ð õ �3”<Ñ Ô  1Ò$Ð$Ø_Ð_ÅÀZÐQTÔQ]ÑA^ÔA^Ð_Ñ_Ô_�
øØ�J˜}¨RÔ0Ô@ÑAÔAˆŒ	õ ”MÝŒJ�w¨Ð-Ñ-Ô-ÝŒI�m BÔ'Ô7¸ÑEÔEñ
ô 
ˆŒ	ð
 —’‘”ð 	=ñ 	=ˆAÝ˜!�RœYÑ'Ô'ð =Ý”×%Ò% a¤h°DÐ%Ñ9Ô9Ð9Ý˜a¥¤Ñ+Ô+ð 3°´Ð0BÝ”G×%Ò% a¤f¨cÑ2Ô2Ð2øÝ˜A�rœ|Ñ,Ô,ð =Ø”8Ð'Ý”G×%Ò% a¤h°Ñ4Ô4Ð4Ø”6Ð%Ý”G×%Ò% a¤f¨cÑ2Ô2Ð2øÝ˜AÕ1Ñ2Ô2ð =Ø Ÿ|š|™~œ~ð =ð =�GÝ”G×)Ò)¨'°tÐ)Ñ<Ô<Ð<Ð<ùð	=ð 	=r,   r6   c                 ó¬  — t          |dd¦  «        d         }|                      |¦  «        }|                     d¦  «                             dd¦  «        }|                      |¦  «        }| j        j        f| j        j        z   }| j        D ]} |||¦  «        \  }}Œ|                      |¦  «        }|d d …df         }|  	                    |¦  «        }|S )Nr�   r   r   r2   )
r@   r$  Úflattenr]   r&  r  r  r(  rG   r*  )rQ   r6   rT   r  s       r-   rh   zMViT.forward!  sÔ   € å�q˜!˜QÑÔ Ô"ˆà�NŠN˜1ÑÔˆØ�IŠI�a‰LŒL×"Ò" 1 aÑ(Ô(ˆð ×Ò˜aÑ Ô ˆð Ô Ô.Ð0°4Ô3DÔ3QÑQˆØ”[ð 	#ð 	#ˆEØ�U˜1˜c‘]”]‰FˆAˆsˆsØ�IŠI�a‰LŒLˆð ˆaˆaˆa�ˆdŒGˆØ�IŠI�a‰LŒLˆàˆr,   )	r  r¬   r¬   r  NNr  r  r  )r&   r'   r(   r   r)   r
   r   rj   rá   r	   r   rN   ri   rL   r[   rk   rh   rl   rm   s   @r-   r   r   ¨  s”  ø€ € € € € ð Ø#&Ø'*ØØ48Ø9=Ø3<Ø3<Ø4=ð#v=ð v=à˜C ˜H”oðv=ð ðv=ð   Ô.ð	v=ð
 ðv=ð "&ðv=ð ðv=ð ðv=ð ðv=ð !ðv=ð  %ðv=ð ðv=ð ˜  b¤i Ô0Ô1ðv=ð ˜X c¨2¬9 nÔ5Ô6ðv=ð " # s¨C -Ô0ðv=ð  " # s¨C -Ô0ð!v=ð" # 3¨¨S =Ô1ð#v=ð$ 
ð%v=ð v=ð v=ð v=ð v=ð v=ðp˜œð ¨%¬,ð ð ð ð ð ð ð ð r,   r   r  ræ   r3  ÚprogressÚkwargsc                 óš  — |�‹t          |dt          |j        d         ¦  «        ¦  «         |j        d         d         |j        d         d         k    sJ ‚t          |d|j        d         ¦  «         t          |d|j        d         ¦  «         |                     dd	¦  «        }|                     dd
¦  «        }t	          d||| |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |dœ|¤Ž}|�*|                     |                     |d¬¦  «        ¦  «         |S )Nr  Ú
categoriesÚmin_sizer   r2   r  r  Úmin_temporal_size©éà   r=  é   r°   Fr¦   Tr±   rå   )r  r  r  r°   r¦   r±   rå   ræ   )r6  Ú
check_hashr+   )r   rÑ   ÚmetaÚpopr   Úload_state_dictÚget_state_dict)r  ræ   r3  r6  r7  r  r  Úmodels           r-   Ú_mvitrE  8  sW  € ð ÐÝ˜f mµS¸¼ÀlÔ9SÑ5TÔ5TÑUÔUÐUØŒ|˜JÔ'¨Ô*¨g¬l¸:Ô.FÀqÔ.IÒIÐIÐIÐIÝ˜f n°g´lÀ:Ô6NÑOÔOÐOÝ˜f o°w´|ÐDWÔ7XÑYÔYÐYØ—:’:˜n¨jÑ9Ô9€LØ—J’J˜°Ñ3Ô3€Måð 
Ø!Ø#Ø#Ø—j’j °%Ñ8Ô8Ø &§
¢
Ð+DÀdÑ KÔ KØ—j’j °%Ñ8Ô8ØŸ
š
Ð#4°eÑ<Ô<Ø3ð
ð 
ð ð
ð 
€Eð ÐØ×Ò˜g×4Ò4¸hÐSWÐ4ÑXÔXÑYÔYÐYà€Lr,   c                   óh   — e Zd Z ed eedddd¬¦  «        ddedd	d
ddddœidddœ	¬¦  «        ZeZdS )r   z:https://download.pytorch.org/models/mvit_v1_b-dbeb1030.pthr<  ©é   ©çÍÌÌÌÌÌÜ?rJ  rJ  ©çÍÌÌÌÌÌÌ?rL  rL  ©Ú	crop_sizeÚresize_sizeÚmeanrÄ   r>  zShttps://github.com/facebookresearch/pytorchvideo/blob/main/docs/source/model_zoo.mdúœThe weights were ported from the paper. The accuracies are estimated on video-level with parameters `frame_rate=7.5`, `clips_per_video=5`, and `clip_len=16`ip¢.úKinetics-400gJ+‡žS@gh‘í|?eW@©zacc@1zacc@5gu“V¦Q@gœÄ °rxa@©	r:  r;  r9  ÚrecipeÚ_docsÚ
num_paramsÚ_metricsÚ_opsÚ
_file_size©ÚurlÚ
transformsr@  N©	r&   r'   r(   r   r   r   r   ÚKINETICS400_V1ÚDEFAULTr+   r,   r-   r   r   Y  s”   € € € € € Ø�WØHØ�7ØØ ØØ#Ø%ð
ñ 
ô 
ð #Ø!#Ø1Økð[ð #àØ#Ø#ð!ð !ðð Ø!ð#
ð 
ðñ ô €Nð: €G€G€Gr,   r   c                   óh   — e Zd Z ed eedddd¬¦  «        ddedd	d
ddddœidddœ	¬¦  «        ZeZdS )r   z:https://download.pytorch.org/models/mvit_v2_s-ae3be167.pthr<  rG  rI  rK  rM  r>  zChttps://github.com/facebookresearch/SlowFast/blob/main/MODEL_ZOO.mdrQ  irR  gœÄ °r0T@gÃõ(\�ªW@rS  gu“VP@g?5^ºI|`@rT  r[  Nr^  r+   r,   r-   r   r   z  s”   € € € € € Ø�WØHØ�7ØØ ØØ#Ø%ð
ñ 
ô 
ð #Ø!#Ø1Ø[ð[ð #àØ#Ø#ð!ð !ðð Ø!ð#
ð 
ðñ ô €Nð: €G€G€Gr,   r   Ú
pretrained)r3  T)r3  r6  c                 ó  — t                                | ¦  «        } g d¢g d¢g d¢g g d¢g g d¢g g g g g g g g g g g d¢g gg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gg g d¢g g d¢g g g g g g g g g g g d¢g gg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gd	œ}g }t          t          |d
         ¦  «        ¦  «        D ]}|                     t          |d
         |         |d         |         |d         |         |d         |         |d         |         |d         |         |d         |         ¬	¦  «        ¦  «         Œ€t          ddd|dd|                     dd¦  «        | |dœ|¤ŽS )a¿  
    Constructs a base MViTV1 architecture from
    `Multiscale Vision Transformers <https://arxiv.org/abs/2104.11227>`__.

    .. betastatus:: video module

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

    .. autoclass:: torchvision.models.video.MViT_V1_B_Weights
        :members:
    ©r2   r   r   rV   rV   rV   rV   rV   rV   rV   rV   rV   rV   rV   é   re  ©é`   éÀ   rh  é€  ri  ri  ri  ri  ri  ri  ri  ri  ri  ri  é   rj  )rh  rh  ri  ri  ri  ri  ri  ri  ri  ri  ri  ri  ri  rj  rj  rj  ©r   r   r   ©r2   r   r   ©r2   re  re  ©r2   rV   rV   ©r2   r2   r2   ©r   r    r!   r"   r#   r$   r%   r   r    r!   r"   r#   r$   r%   r<  r>  Fræ   çš™™™™™É?)r  r  r  r°   r¦   ræ   r3  r6  r+   )r   ÚverifyÚrangerÑ   rM   r   rE  rA  ©r3  r6  r7  Úconfigr  Úis         r-   r   r   ›  s   € õ2  ×&Ò& wÑ/Ô/€Gð FÐEÐEØiÐiÐiØkÐkÐkØ˜˜˜ B¨	¨	¨	°2°r¸2¸rÀ2ÀrÈ2ÈrÐSUÐWYÐ[dÐ[dÐ[dÐfhÐiàˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð!
ð$ ˜˜˜ B¨	¨	¨	°2°r¸2¸rÀ2ÀrÈ2ÈrÐSUÐWYÐ[dÐ[dÐ[dÐfhÐiàˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð!
ð1*ð *€FðX €MÝ•3�v˜kÔ*Ñ+Ô+Ñ,Ô,ð 
ð 
ˆØ×ÒÝØ  Ô-¨aÔ0Ø%Ð&6Ô7¸Ô:Ø &Ð'8Ô 9¸!Ô <Ø 
Ô+¨AÔ.Ø  Ô-¨aÔ0Ø 
Ô+¨AÔ.Ø  Ô-¨aÔ0ðñ ô ñ
	
ô 
	
ð 
	
ð 
	
õ ð 
ØØØ#ØØ %Ø$ŸjšjÐ)@À#ÑFÔFØØð
ð 
ð ð
ð 
ð 
r,   c                 ót  — t                                | ¦  «        } g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gd	œ}g }t          t          |d
         ¦  «        ¦  «        D ]}|                     t          |d
         |         |d         |         |d         |         |d         |         |d         |         |d         |         |d         |         ¬	¦  «        ¦  «         Œ€t          ddd|dddd|                     dd¦  «        | |dœ
|¤ŽS )aC  Constructs a small MViTV2 architecture from
    `Multiscale Vision Transformers <https://arxiv.org/abs/2104.11227>`__ and
    `MViTv2: Improved Multiscale Vision Transformers for Classification
    and Detection <https://arxiv.org/abs/2112.01526>`__.

    .. betastatus:: video module

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

    .. autoclass:: torchvision.models.video.MViT_V2_S_Weights
            :members:
    rd  )rg  rg  rh  rh  ri  ri  ri  ri  ri  ri  ri  ri  ri  ri  ri  rj  rf  rk  ro  rl  rm  rn  rp  r   r    r!   r"   r#   r$   r%   r<  r>  TFræ   rq  )
r  r  r  r°   r¦   r±   rå   ræ   r3  r6  r+   )r   rr  rs  rÑ   rM   r   rE  rA  rt  s         r-   r   r   ý  s+  € õ4  ×&Ò& wÑ/Ô/€Gð FÐEÐEØhÐhÐhØjÐjÐjàˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð!
ð& ˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð!
ð& ˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð!
ð& ˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð!
ðuLð L€Fð\ €MÝ•3�v˜kÔ*Ñ+Ô+Ñ,Ô,ð 
ð 
ˆØ×ÒÝØ  Ô-¨aÔ0Ø%Ð&6Ô7¸Ô:Ø &Ð'8Ô 9¸!Ô <Ø 
Ô+¨AÔ.Ø  Ô-¨aÔ0Ø 
Ô+¨AÔ.Ø  Ô-¨aÔ0ðñ ô ñ
	
ô 
	
ð 
	
ð 
	
õ ð ØØØ#ØØ %ØØØ$ŸjšjÐ)@À#ÑFÔFØØðð ð ðð ð r,   );rÆ   Údataclassesr   Ú	functoolsr   Útypingr   r   r   r   r	   r
   r   r[   Útorch.fxÚtorch.nnrN   Úopsr   r   Útransforms._presetsr   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__r   r)   r5   rk   r@   rC   ÚfxÚwrapri   rE   rw   r¤   rj   r©   r«   rã   r  r   rá   rE  r   r   r_  r   r   r+   r,   r-   ú<module>r†     sõ  ðØ €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà €€€Ø €€€Ø Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø +Ð +Ð +Ð +Ð +Ð +Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cðð ð €ð ðð ð ð ð ñ ô ñ „ððˆX�cŒ]ð ˜sð ð ð ð ð�%”,ð ¨Cð ¸Sð ÀUÈ5Ì<ÐY\ÐK\ÔE]ð ð ð ð ð�”ð ¨#ð ¸3ð ÈCð ÐTYÔT`ð ð ð ð ð „‡‚ˆlÑ Ô Ð Ø „‡‚ˆjÑ Ô Ð ð)ð )ð )ð )ð )ˆ2Œ9ñ )ô )ð )ðX˜EœLð ¨Sð °U´\ð ð ð ð ð9Ø
Œ,ð9à„|ð9ð ��c˜3�Ôð9ð ��c˜3�Ôð	9ð
 Œ|ð9ð Œ|ð9ð Œ|ð9ð „\ð9ð 9ð 9ð 9ðx�U”\ð ¨U¬\ð ÐTXð ð ð ð ð „‡‚ˆnÑ Ô Ð Ø „‡‚ˆoÑ Ô Ð ð}ð }ð }ð }ð }˜"œ)ñ }ô }ð }ð@EJð EJð EJð EJð EJ�b”iñ EJô EJð EJðPð ð ð ð ˜œñ ô ð ð:Mð Mð Mð Mð Mˆ2Œ9ñ Mô Mð Mð`Ø˜Ô&ðà ðð �kÔ"ðð ð	ð
 ðð 
ðð ð ð ðBð ð ð ð ˜ñ ô ð ðBð ð ð ð ˜ñ ô ð ðB €ÑÔØÐ ,Ð0AÔ0PÐ!QÐRÑRÔRØ8<Ètð ]ð ]ð ]˜(Ð#4Ô5ð ]Èð ]Ð_bð ]Ðgkð ]ð ]ð ]ñ SÔRñ Ôð]ð@ €ÑÔØÐ ,Ð0AÔ0PÐ!QÐRÑRÔRØ8<Ètð Bð Bð B˜(Ð#4Ô5ð BÈð BÐ_bð BÐgkð Bð Bð Bñ SÔRñ ÔðBð Bð Br,   