Ë
    T^(hK_  ã                   ó�  — d Z ddlmZmZmZ ddlZddlmZ ddl	m
Z
mZmZ ddlmZmZmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZ ddlmZ  ej:                  e«      ZdZ dZ!g d¢Z"dZ#dZ$ G d„ dejJ                  jL                  «      Z' G d„ dejJ                  jL                  «      Z( G d„ dejJ                  jL                  «      Z) G d„ dejJ                  jL                  «      Z* G d„ dejJ                  jL                  «      Z+ G d„ dejJ                  jL                  «      Z, G d„ dejJ                  jL                  «      Z- G d„ d ejJ                  jL                  «      Z.e G d!„ d"ejJ                  jL                  «      «       Z/ G d#„ d$e«      Z0d%Z1d&Z2 ed'e1«       G d(„ d)e0«      «       Z3 ed*e1«       G d+„ d,e0e«      «       Z4g d-¢Z5y).zTensorFlow RegNet model.é    )ÚOptionalÚTupleÚUnionNé   )ÚACT2FN)Úadd_code_sample_docstringsÚadd_start_docstringsÚ%add_start_docstrings_to_model_forward)Ú TFBaseModelOutputWithNoAttentionÚ*TFBaseModelOutputWithPoolingAndNoAttentionÚTFSequenceClassifierOutput)ÚTFPreTrainedModelÚTFSequenceClassificationLossÚkerasÚkeras_serializableÚunpack_inputs)Ú
shape_list)Úloggingé   )ÚRegNetConfigr   zfacebook/regnet-y-040)r   i@  é   r   ztabby, tabby catc                   óV   ‡ — e Zd Z	 	 	 	 d
dedededededee   fˆ fd„Zd„ Zdd	„Zˆ xZ	S )ÚTFRegNetConvLayerÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚgroupsÚ
activationc           	      ót  •— t        ‰| �  di |¤Ž t        j                  j	                  |dz  ¬«      | _        t        j                  j                  |||d|dd¬«      | _        t        j                  j                  ddd	¬
«      | _	        |�	t        |   nt        j                  | _        || _        || _        y )Né   )ÚpaddingÚVALIDFÚconvolution)Úfiltersr   Ústridesr"   r   Úuse_biasÚnameçñhãˆµøä>çÍÌÌÌÌÌì?Únormalization©ÚepsilonÚmomentumr(   © )ÚsuperÚ__init__r   ÚlayersÚZeroPadding2Dr"   ÚConv2Dr$   ÚBatchNormalizationr+   r   ÚtfÚidentityr   r   r   )	Úselfr   r   r   r   r   r   ÚkwargsÚ	__class__s	           €úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/regnet/modeling_tf_regnet.pyr1   zTFRegNetConvLayer.__init__7   s¯   ø€ ô 	‰ÑÑ"˜6Ò"ô —|‘|×1Ñ1¸+ÈÑ:JÐ1ÓKˆŒÜ Ÿ<™<×.Ñ.Ø Ø#ØØØØØð /ó 
ˆÔô #Ÿ\™\×<Ñ<ÀTÐTWÐ^mÐ<ÓnˆÔØ0:Ð0Fœ& Ò,ÌBÏKÉKˆŒØ&ˆÔØ(ˆÕó    c                 óŠ   — | j                  | j                  |«      «      }| j                  |«      }| j                  |«      }|S ©N)r$   r"   r+   r   )r8   Úhidden_states     r;   ÚcallzTFRegNetConvLayer.callS   s?   € Ø×'Ñ'¨¯©°\Ó(BÓCˆØ×)Ñ)¨,Ó7ˆØ—‘ |Ó4ˆØÐr<   c                 óþ  — | j                   ry d| _         t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d d | j                  g«       d d d «       t        | dd «      �\t        j                  | j                  j
                  «      5  | j                  j                  d d d | j                  g«       d d d «       y y # 1 sw Y   ŒsxY w# 1 sw Y   y xY w©NTr$   r+   ©
ÚbuiltÚgetattrr6   Ú
name_scoper$   r(   Úbuildr   r+   r   ©r8   Úinput_shapes     r;   rG   zTFRegNetConvLayer.buildY   óä   € Ø�:Š:ØØˆŒ
Ü�4˜¨Ó-Ð9Ü—‘˜t×/Ñ/×4Ñ4Ó5ñ MØ× Ñ ×&Ñ&¨¨d°D¸$×:JÑ:JÐ'KÔL÷Mä�4˜¨$Ó/Ð;Ü—‘˜t×1Ñ1×6Ñ6Ó7ñ PØ×"Ñ"×(Ñ(¨$°°d¸D×<MÑ<MÐ)NÔO÷Pð Pð <÷Mð Mú÷Pð Púó   Á*C'Â3*C3Ã'C0Ã3C<)r   r   r   Úrelur>   )
Ú__name__Ú
__module__Ú__qualname__Úintr   Ústrr1   r@   rG   Ú__classcell__©r:   s   @r;   r   r   6   s_   ø„ ð
 ØØØ$*ñ)àð)ð ð)ð ð	)ð
 ð)ð ð)ð ˜S‘Mõ)ò8÷	Pr<   r   c                   ó6   ‡ — e Zd ZdZdefˆ fd„Zd„ Zdd„Zˆ xZS )ÚTFRegNetEmbeddingszO
    RegNet Embeddings (stem) composed of a single aggressive convolution.
    Úconfigc                 ó®   •— t        ‰| �  di |¤Ž |j                  | _        t        |j                  |j                  dd|j
                  d¬«      | _        y )Nr   r!   Úembedder)r   r   r   r   r   r(   r/   )r0   r1   Únum_channelsr   Úembedding_sizeÚ
hidden_actrX   ©r8   rV   r9   r:   s      €r;   r1   zTFRegNetEmbeddings.__init__j   sQ   ø€ Ü‰ÑÑ"˜6Ò"Ø"×/Ñ/ˆÔÜ)Ø×+Ñ+Ø×.Ñ.ØØØ×(Ñ(Øô
ˆ�r<   c                 óÎ   — t        |«      d   }t        j                  «       r|| j                  k7  rt	        d«      ‚t        j
                  |d¬«      }| j                  |«      }|S )Nr   zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)r   r!   r   r   ©Úperm)r   r6   Úexecuting_eagerlyrY   Ú
ValueErrorÚ	transposerX   )r8   Úpixel_valuesrY   r?   s       r;   r@   zTFRegNetEmbeddings.callv   s`   € Ü! ,Ó/°Ñ2ˆÜ×ÑÔ! l°d×6GÑ6GÒ&GÜØwóð ô —|‘| L°|ÔDˆØ—}‘} \Ó2ˆØÐr<   c                 óú   — | j                   ry d| _         t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   y xY w)NTrX   )rD   rE   r6   rF   rX   r(   rG   rH   s     r;   rG   zTFRegNetEmbeddings.build„   si   € Ø�:Š:ØØˆŒ
Ü�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ *Ø—‘×#Ñ# DÔ)÷*ð *ð 7÷*ð *úó   ÁA1Á1A:r>   )	rM   rN   rO   Ú__doc__r   r1   r@   rG   rR   rS   s   @r;   rU   rU   e   s   ø„ ñð

˜|õ 

ò÷*r<   rU   c                   óx   ‡ — e Zd ZdZddededefˆ fd„Zddej                  dedej                  fd	„Z	dd
„Z
ˆ xZS )ÚTFRegNetShortCutzž
    RegNet shortcut, used to project the residual features to the correct size. If needed, it is also used to
    downsample the input using `stride=2`.
    r   r   r   c                 óà   •— t        ‰| �  d	i |¤Ž t        j                  j	                  |d|dd¬«      | _        t        j                  j                  ddd¬«      | _        || _        || _	        y )
Nr   Fr$   )r%   r   r&   r'   r(   r)   r*   r+   r,   r/   )
r0   r1   r   r2   r4   r$   r5   r+   r   r   )r8   r   r   r   r9   r:   s        €r;   r1   zTFRegNetShortCut.__init__“   sm   ø€ Ü‰ÑÑ"˜6Ò"Ü Ÿ<™<×.Ñ.Ø ¨a¸È%ÐVcð /ó 
ˆÔô #Ÿ\™\×<Ñ<ÀTÐTWÐ^mÐ<ÓnˆÔØ&ˆÔØ(ˆÕr<   ÚinputsÚtrainingÚreturnc                 óF   — | j                  | j                  |«      |¬«      S )N©rk   )r+   r$   )r8   rj   rk   s      r;   r@   zTFRegNetShortCut.callœ   s#   € Ø×!Ñ! $×"2Ñ"2°6Ó":ÀXÐ!ÓNÐNr<   c                 óþ  — | j                   ry d| _         t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d d | j                  g«       d d d «       t        | dd «      �\t        j                  | j                  j
                  «      5  | j                  j                  d d d | j                  g«       d d d «       y y # 1 sw Y   ŒsxY w# 1 sw Y   y xY wrB   rC   rH   s     r;   rG   zTFRegNetShortCut.buildŸ   rJ   rK   )r!   )Fr>   )rM   rN   rO   rf   rP   r1   r6   ÚTensorÚboolr@   rG   rR   rS   s   @r;   rh   rh   �   sN   ø„ ññ
) Cð )°sð )ÀCõ )ñO˜2Ÿ9™9ð O°ð OÀÇÁó O÷	Pr<   rh   c                   ó:   ‡ — e Zd ZdZdedefˆ fd„Zd„ Zdd„Zˆ xZS )ÚTFRegNetSELayerz|
    Squeeze and Excitation layer (SE) proposed in [Squeeze-and-Excitation Networks](https://arxiv.org/abs/1709.01507).
    r   Úreduced_channelsc                 ó"  •— t        ‰| �  d
i |¤Ž t        j                  j	                  dd¬«      | _        t        j                  j                  |ddd¬«      t        j                  j                  |ddd	¬«      g| _        || _        || _	        y )NTÚpooler©Úkeepdimsr(   r   rL   zattention.0)r%   r   r   r(   Úsigmoidzattention.2r/   )
r0   r1   r   r2   ÚGlobalAveragePooling2Drv   r4   Ú	attentionr   rt   )r8   r   rt   r9   r:   s       €r;   r1   zTFRegNetSELayer.__init__°   sƒ   ø€ Ü‰ÑÑ"˜6Ò"Ü—l‘l×9Ñ9À4ÈhÐ9ÓWˆŒä�L‰L×ÑÐ(8ÀaÐTZÐanÐÓoÜ�L‰L×Ñ¨ÀÈyÐ_lÐÓmð
ˆŒð 'ˆÔØ 0ˆÕr<   c                 ód   — | j                  |«      }| j                  D ]
  } ||«      }Œ ||z  }|S r>   )rv   r{   )r8   r?   ÚpooledÚlayer_modules       r;   r@   zTFRegNetSELayer.callº   s=   € à—‘˜\Ó*ˆØ ŸN™Nò 	*ˆLÙ! &Ó)‰Fð	*à# fÑ,ˆØÐr<   c                 óÈ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d«       d d d «       t        | dd «      �Ãt        j                  | j                  d   j
                  «      5  | j                  d   j                  d d d | j                  g«       d d d «       t        j                  | j                  d   j
                  «      5  | j                  d   j                  d d d | j                  g«       d d d «       y y # 1 sw Y   ŒÚxY w# 1 sw Y   ŒxxY w# 1 sw Y   y xY w)NTrv   ©NNNNr{   r   r   )
rD   rE   r6   rF   rv   r(   rG   r{   r   rt   rH   s     r;   rG   zTFRegNetSELayer.buildÂ   s.  € Ø�:Š:ØØˆŒ
Ü�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ <Ø—‘×!Ñ!Ð":Ô;÷<ä�4˜ dÓ+Ð7Ü—‘˜tŸ~™~¨aÑ0×5Ñ5Ó6ñ NØ—‘˜qÑ!×'Ñ'¨¨t°T¸4×;KÑ;KÐ(LÔM÷Nä—‘˜tŸ~™~¨aÑ0×5Ñ5Ó6ñ SØ—‘˜qÑ!×'Ñ'¨¨t°T¸4×;PÑ;PÐ(QÔR÷Sð Sð 8÷<ð <ú÷Nð Nú÷Sð Sús$   ÁE Â(-EÄ	-EÅ E	ÅEÅE!r>   )	rM   rN   rO   rf   rP   r1   r@   rG   rR   rS   s   @r;   rs   rs   «   s&   ø„ ñð1 Cð 1¸3õ 1ò÷Sr<   rs   c            	       óD   ‡ — e Zd ZdZd	dedededefˆ fd„Zd„ Zd
d„Zˆ xZ	S )ÚTFRegNetXLayerzt
    RegNet's layer composed by three `3x3` convolutions, same as a ResNet bottleneck layer with reduction = 1.
    rV   r   r   r   c           	      óž  •— t        ‰| �  di |¤Ž ||k7  xs |dk7  }t        d||j                  z  «      }|rt	        |||d¬«      n t
        j                  j                  dd¬«      | _        t        ||d|j                  d¬«      t        |||||j                  d¬	«      t        ||dd d
¬«      g| _        t        |j                     | _        y )Nr   Úshortcut©r   r(   Úlinear©r(   úlayer.0©r   r   r(   úlayer.1©r   r   r   r(   úlayer.2r/   )r0   r1   ÚmaxÚgroups_widthrh   r   r2   Ú
Activationr„   r   r[   r   r   ©	r8   rV   r   r   r   r9   Úshould_apply_shortcutr   r:   s	           €r;   r1   zTFRegNetXLayer.__init__Õ   sÙ   ø€ Ü‰ÑÑ"˜6Ò"Ø +¨|Ñ ;Ò J¸vÈ¹{ÐÜ�Q˜¨×(;Ñ(;Ñ;Ó<ˆñ %ô ˜[¨,¸vÈJÕWä—‘×(Ñ(¨¸
Ð(ÓCð 	Œô ˜k¨<ÀQÐSY×SdÑSdÐktÔuÜØ˜l°6À&ÐU[×UfÑUfÐmvôô ˜l¨LÀaÐTXÐ_hÔið
ˆŒô ! ×!2Ñ!2Ñ3ˆ�r<   c                 óŠ   — |}| j                   D ]
  } ||«      }Œ | j                  |«      }||z  }| j                  |«      }|S r>   ©r2   r„   r   ©r8   r?   Úresidualr~   s       r;   r@   zTFRegNetXLayer.callè   óP   € ØˆØ ŸK™Kò 	6ˆLÙ'¨Ó5‰Lð	6à—=‘= Ó*ˆØ˜Ñ ˆØ—‘ |Ó4ˆØÐr<   c                 óÀ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   ŒbxY w# 1 sw Y   ŒUxY w©NTr„   r2   ©rD   rE   r6   rF   r„   r(   rG   r2   ©r8   rI   Úlayers      r;   rG   zTFRegNetXLayer.buildñ   ó¼   € Ø�:Š:ØØˆŒ
Ü�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ *Ø—‘×#Ñ# DÔ)÷*ä�4˜ 4Ó(Ð4ØŸ™ò &�Ü—]‘] 5§:¡:Ó.ñ &Ø—K‘K Ô%÷&ð &ñ&ð 5÷*ð *ú÷&ð &úó   ÁCÂ*CÃCÃC	©r   r>   ©
rM   rN   rO   rf   r   rP   r1   r@   rG   rR   rS   s   @r;   r‚   r‚   Ð   ó4   ø„ ññ4˜|ð 4¸#ð 4ÈSð 4ÐZ]õ 4ò&÷
&r<   r‚   c            	       óD   ‡ — e Zd ZdZd	dedededefˆ fd„Zd„ Zd
d„Zˆ xZ	S )ÚTFRegNetYLayerzC
    RegNet's Y layer: an X layer with Squeeze and Excitation.
    rV   r   r   r   c                 óâ  •— t        ‰| �  di |¤Ž ||k7  xs |dk7  }t        d||j                  z  «      }|rt	        |||d¬«      n t
        j                  j                  dd¬«      | _        t        ||d|j                  d¬«      t        |||||j                  d¬	«      t        |t        t        |d
z  «      «      d¬«      t        ||dd d¬«      g| _        t        |j                     | _        y )Nr   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   é   rŒ   )rt   r(   zlayer.3r/   )r0   r1   r�   rŽ   rh   r   r2   r�   r„   r   r[   rs   rP   Úroundr   r   r�   s	           €r;   r1   zTFRegNetYLayer.__init__  sõ   ø€ Ü‰ÑÑ"˜6Ò"Ø +¨|Ñ ;Ò J¸vÈ¹{ÐÜ�Q˜¨×(;Ñ(;Ñ;Ó<ˆñ %ô ˜[¨,¸vÈJÕWä—‘×(Ñ(¨¸
Ð(ÓCð 	Œô ˜k¨<ÀQÐSY×SdÑSdÐktÔuÜØ˜l°6À&ÐU[×UfÑUfÐmvôô ˜L¼3¼uÀ[ÐSTÁ_Ó?UÓ;VÐ]fÔgÜ˜l¨LÀaÐTXÐ_hÔið
ˆŒô ! ×!2Ñ!2Ñ3ˆ�r<   c                 óŠ   — |}| j                   D ]
  } ||«      }Œ | j                  |«      }||z  }| j                  |«      }|S r>   r“   r”   s       r;   r@   zTFRegNetYLayer.call  r–   r<   c                 óÀ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   ŒbxY w# 1 sw Y   ŒUxY wr˜   r™   rš   s      r;   rG   zTFRegNetYLayer.build  rœ   r�   rž   r>   rŸ   rS   s   @r;   r¢   r¢   þ   r    r<   r¢   c                   óJ   ‡ — e Zd ZdZ	 d
dededededef
ˆ fd„Zd„ Zdd	„Zˆ xZ	S )ÚTFRegNetStagez4
    A RegNet stage composed by stacked layers.
    rV   r   r   r   Údepthc                 óâ   •— t        ‰	| �  di |¤Ž |j                  dk(  rt        nt        } |||||d¬«      gt        |dz
  «      D �cg c]  } ||||d|dz   › �¬«      ‘Œ c}¢| _        y c c}w )NÚxzlayers.0r…   r   zlayers.r‡   r/   )r0   r1   Ú
layer_typer‚   r¢   Úranger2   )
r8   rV   r   r   r   rª   r9   r›   Úir:   s
            €r;   r1   zTFRegNetStage.__init__1  s„   ø€ ô 	‰ÑÑ"˜6Ò"à"(×"3Ñ"3°sÒ":•Äˆñ �&˜+ |¸FÈÔTð
ô Z_Ð_dÐghÑ_hÓYiÖjÐTU‰e�F˜L¨,¸wÀqÈ1ÁuÀgÐ=NÖOÒjð
ˆ�ùò ks   Á	A,c                 ó8   — | j                   D ]
  } ||«      }Œ |S r>   )r2   )r8   r?   r~   s      r;   r@   zTFRegNetStage.call=  s%   € Ø ŸK™Kò 	6ˆLÙ'¨Ó5‰Lð	6àÐr<   c                 óô   — | j                   ry d| _         t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   ŒIxY w)NTr2   )rD   rE   r2   r6   rF   r(   rG   rš   s      r;   rG   zTFRegNetStage.buildB  sp   € Ø�:Š:ØØˆŒ
Ü�4˜ 4Ó(Ð4ØŸ™ò &�Ü—]‘] 5§:¡:Ó.ñ &Ø—K‘K Ô%÷&ð &ñ&ð 5÷&ð &ús   ÁA.Á.A7	)r!   r!   r>   rŸ   rS   s   @r;   r©   r©   ,  sF   ø„ ñð
 hiñ

Ø"ð

Ø14ð

ØDGð

ØQTð

Øadõ

ò÷
&r<   r©   c            	       ó\   ‡ — e Zd Zdefˆ fd„Z	 d	dej                  dededefd„Z	d
d„Z
ˆ xZS )ÚTFRegNetEncoderrV   c                 óî  •— t        ‰| �  di |¤Ž g | _        | j                  j                  t	        ||j
                  |j                  d   |j                  rdnd|j                  d   d¬«      «       t        |j                  |j                  dd  «      }t        t        ||j                  dd  «      «      D ]:  \  }\  \  }}}| j                  j                  t	        ||||d|dz   › �¬«      «       Œ< y )	Nr   r!   r   zstages.0)r   rª   r(   zstages.)rª   r(   r/   )r0   r1   ÚstagesÚappendr©   rZ   Úhidden_sizesÚdownsample_in_first_stageÚdepthsÚzipÚ	enumerate)	r8   rV   r9   Úin_out_channelsr¯   r   r   rª   r:   s	           €r;   r1   zTFRegNetEncoder.__init__M  s÷   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒà�‰×ÑÜØØ×%Ñ%Ø×#Ñ# AÑ&Ø"×<Ò<‘qÀ!Ø—m‘m AÑ&Øôô		
ô ˜f×1Ñ1°6×3FÑ3FÀqÀrÐ3JÓKˆÜ7@ÄÀ_ÐV\×VcÑVcÐdeÐdfÐVgÓAhÓ7iò 	vÑ3ˆAÑ3Ñ+�˜l¨UØ�K‰K×Ñœ}¨V°[À,ÐV[ÐdkÐlmÐpqÑlqÐkrÐbsÔtÕuñ	vr<   r?   Úoutput_hidden_statesÚreturn_dictrl   c                 ó¦   — |rdnd }| j                   D ]  }|r||fz   } ||«      }Œ |r||fz   }|st        d„ ||fD «       «      S t        ||¬«      S )Nr/   c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr>   r/   )Ú.0Úvs     r;   ú	<genexpr>z'TFRegNetEncoder.call.<locals>.<genexpr>n  s   è ø€ ÒS˜qÀQÁ]œÑSùs   ‚Š)Úlast_hidden_stateÚhidden_states)rµ   Útupler   )r8   r?   r½   r¾   rÅ   Ústage_modules         r;   r@   zTFRegNetEncoder.call_  sq   € ñ 3™¸ˆà ŸK™Kò 	6ˆLÙ#Ø -°°Ñ ?�á'¨Ó5‰Lð		6ñ  Ø)¨\¨OÑ;ˆMáÜÑS \°=Ð$AÔSÓSÐSä/À,Ð^kÔlÐlr<   c                 óØ   — | j                   ry d| _         | j                  D ];  }t        j                  |j                  «      5  |j                  d «       d d d «       Œ= y # 1 sw Y   ŒHxY w)NT)rD   rµ   r6   rF   r(   rG   )r8   rI   Ústages      r;   rG   zTFRegNetEncoder.buildr  s\   € Ø�:Š:ØØˆŒ
Ø—[‘[ò 	"ˆEÜ—‘˜uŸz™zÓ*ñ "Ø—‘˜DÔ!÷"ð "ñ	"÷"ð "ús   ÁA Á A)	)FTr>   )rM   rN   rO   r   r1   r6   rp   rq   r   r@   rG   rR   rS   s   @r;   r³   r³   L  sK   ø„ ðv˜|õ vð& `dñmØŸI™IðmØ=AðmØX\ðmà	)óm÷&"r<   r³   c                   óx   ‡ — e Zd ZeZˆ fd„Ze	 	 	 d	dej                  de	e
   de	e
   de
def
d„«       Zd
d„Zˆ xZS )ÚTFRegNetMainLayerc                 óÆ   •— t        ‰| �  di |¤Ž || _        t        |d¬«      | _        t        |d¬«      | _        t        j                  j                  dd¬«      | _
        y )NrX   r‡   ÚencoderTrv   rw   r/   )r0   r1   rV   rU   rX   r³   rÍ   r   r2   rz   rv   r\   s      €r;   r1   zTFRegNetMainLayer.__init__  sQ   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒÜ*¨6¸
ÔCˆŒÜ& v°IÔ>ˆŒÜ—l‘l×9Ñ9À4ÈhÐ9ÓWˆ�r<   rc   r½   r¾   rk   rl   c           	      ó  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  ||¬«      }| j	                  ||||¬«      }|d   }| j                  |«      }t        j                  |d¬«      }t        j                  |d¬«      }|r1t        |d   D �	cg c]  }	t        j                  |	d¬«      ‘Œ c}	«      }
|s
||f|dd  z   S t        |||r
¬«      S |j                  ¬«      S c c}	w )Nrn   ©r½   r¾   rk   r   )r   r   r   r!   r^   r   ©rÄ   Úpooler_outputrÅ   )rV   r½   Úuse_return_dictrX   rÍ   rv   r6   rb   rÆ   r   rÅ   )r8   rc   r½   r¾   rk   Úembedding_outputÚencoder_outputsrÄ   Úpooled_outputÚhrÅ   s              r;   r@   zTFRegNetMainLayer.call†  s"  € ð %9Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆàŸ=™=¨À˜=ÓIÐàŸ,™,ØÐ3GÐU`Ðksð 'ó 
ˆð ,¨AÑ.ÐØŸ™Ð$5Ó6ˆô Ÿ™ ]¸ÔFˆÜŸL™LÐ):ÀÔNÐñ  Ü!ÈÐ_`ÑOaÖ"bÈ!¤2§<¡<°¸Ö#EÒ"bÓcˆMáØ% }Ð5¸ÈÈÐ8KÑKÐKä9Ø/Ø'Ù+?˜-ô
ð 	
ð FU×EbÑEbô
ð 	
ùò #cs   Â/Dc                 ó’  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d«       d d d «       y y # 1 sw Y   Œ¿xY w# 1 sw Y   ŒqxY w# 1 sw Y   y xY w)NTrX   rÍ   rv   r€   )	rD   rE   r6   rF   rX   r(   rG   rÍ   rv   rH   s     r;   rG   zTFRegNetMainLayer.build­  s  € Ø�:Š:ØØˆŒ
Ü�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ *Ø—‘×#Ñ# DÔ)÷*ä�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ )Ø—‘×"Ñ" 4Ô(÷)ä�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ <Ø—‘×!Ñ!Ð":Ô;÷<ð <ð 5÷*ð *ú÷)ð )ú÷<ð <ús$   ÁD%Â%D1Ã?D=Ä%D.Ä1D:Ä=E©NNFr>   )rM   rN   rO   r   Úconfig_classr1   r   r6   rp   r   rq   r   r@   rG   rR   rS   s   @r;   rË   rË   {  so   ø„ à€LôXð ð 04Ø&*Øñ$
à—i‘ið$
ð ' t™nð$
ð ˜d‘^ð	$
ð
 ð$
ð 
4ò$
ó ð$
÷L<r<   rË   c                   ó,   — e Zd ZdZeZdZdZed„ «       Z	y)ÚTFRegNetPreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Úregnetrc   c                 ó€   — dt        j                  d | j                  j                  ddft         j                  ¬«      iS )Nrc   éà   )ÚshapeÚdtype)r6   Ú
TensorSpecrV   rY   Úfloat32)r8   s    r;   Úinput_signaturez'TFRegNetPreTrainedModel.input_signatureÆ  s4   € à¤§¡°T¸4¿;¹;×;SÑ;SÐUXÐZ]Ð4^Ôfh×fpÑfpÔ qÐrÐrr<   N)
rM   rN   rO   rf   r   rÙ   Úbase_model_prefixÚmain_input_nameÚpropertyrã   r/   r<   r;   rÛ   rÛ   ¼  s-   „ ñð
  €LØ ÐØ$€Oàñsó ñsr<   rÛ   ad  
    This model is a Tensorflow
    [keras.layers.Layer](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Layer) sub-class. Use it as a
    regular Tensorflow Module and refer to the Tensorflow documentation for all matter related to general usage and
    behavior.

    Parameters:
        config ([`RegNetConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~TFPreTrainedModel.from_pretrained`] method to load the model weights.
a>  
    Args:
        pixel_values (`tf.Tensor` of shape `(batch_size, num_channels, height, width)`):
            Pixel values. Pixel values can be obtained using [`AutoImageProcessor`]. See
            [`ConveNextImageProcessor.__call__`] for details.
        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
zOThe bare RegNet model outputting raw features without any specific head on top.c                   óÔ   ‡ — e Zd Zdefˆ fd„Ze ee«       ee	e
ede¬«      	 	 	 ddej                  dee   dee   ded	ee
eej                     f   f
d
„«       «       «       Zdd„Zˆ xZS )ÚTFRegNetModelrV   c                 óP   •— t        ‰| �  |g|¢­i |¤Ž t        |d¬«      | _        y )NrÜ   r‡   )r0   r1   rË   rÜ   ©r8   rV   rj   r9   r:   s       €r;   r1   zTFRegNetModel.__init__é  s(   ø€ Ü‰Ñ˜Ð3 &Ò3¨FÒ3Ü'¨°XÔ>ˆ�r<   Úvision)Ú
checkpointÚoutput_typerÙ   ÚmodalityÚexpected_outputrc   r½   r¾   rk   rl   c                 ó  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  ||||¬«      }|s|d   f|dd  z   S t	        |j
                  |j                  |j                  ¬«      S )N)rc   r½   r¾   rk   r   r   rÐ   )rV   r½   rÒ   rÜ   r   rÄ   rÑ   rÅ   )r8   rc   r½   r¾   rk   Úoutputss         r;   r@   zTFRegNetModel.callí  s™   € ð" %9Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—+‘+Ø%Ø!5Ø#Øð	 ó 
ˆñ Ø˜A‘J�= 7¨1¨2 ;Ñ.Ð.ä9Ø%×7Ñ7Ø!×/Ñ/Ø!×/Ñ/ô
ð 	
r<   c                 óú   — | j                   ry d| _         t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   y xY w)NTrÜ   )rD   rE   r6   rF   rÜ   r(   rG   rH   s     r;   rG   zTFRegNetModel.build  si   € Ø�:Š:ØØˆŒ
Ü�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ (Ø—‘×!Ñ! $Ô'÷(ð (ð 5÷(ð (úre   rØ   r>   )rM   rN   rO   r   r1   r   r
   ÚREGNET_INPUTS_DOCSTRINGr   Ú_CHECKPOINT_FOR_DOCr   Ú_CONFIG_FOR_DOCÚ_EXPECTED_OUTPUT_SHAPEr6   rp   r   rq   r   r   r@   rG   rR   rS   s   @r;   rè   rè   ä  s®   ø„ ð
?˜|õ ?ð Ù*Ð+BÓCÙØ&Ø>Ø$ØØ.ôð 04Ø&*Øñ
à—i‘ið
ð ' t™nð
ð ˜d‘^ð	
ð
 ð
ð 
Ð9¸5ÀÇÁÑ;KÐKÑ	Lò
óó Dó ð
÷6(r<   rè   z†
    RegNet Model with an image classification head on top (a linear layer on top of the pooled features), e.g. for
    ImageNet.
    c                   óú   ‡ — e Zd Zdefˆ fd„Ze ee«       ee	e
ee¬«      	 	 	 	 	 ddeej                     deej                     dee   dee   ded	ee
eej                     f   fd
„«       «       «       Zdd„Zˆ xZS )ÚTFRegNetForImageClassificationrV   c                 óZ  •— t        ‰| �  |g|¢­i |¤Ž |j                  | _        t        |d¬«      | _        t
        j                  j                  «       |j                  dkD  r2t
        j                  j                  |j                  d¬«      g| _        y t        j                  g| _        y )NrÜ   r‡   r   zclassifier.1)r0   r1   Ú
num_labelsrË   rÜ   r   r2   ÚFlattenÚDenser6   r7   Ú
classifierrê   s       €r;   r1   z'TFRegNetForImageClassification.__init__"  s�   ø€ Ü‰Ñ˜Ð3 &Ò3¨FÒ3Ø ×+Ñ+ˆŒÜ'¨°XÔ>ˆŒô �L‰L× Ñ Ó"ØJP×J[ÑJ[Ð^_ÒJ_ŒE�L‰L×Ñ˜v×0Ñ0°~ÐÓFð
ˆ�äeg×epÑepð
ˆ�r<   )rì   rí   rÙ   rï   rc   Úlabelsr½   r¾   rk   rl   c                 ó–  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  ||||¬«      }|r|j                  n|d   } | j
                  d   |«      } | j
                  d   |«      }	|€dn| j                  ||	¬«      }
|s|	f|dd z   }|
�|
f|z   S |S t        |
|	|j                  ¬«      S )a)  
        labels (`tf.Tensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        NrÏ   r   r   )rþ   Úlogitsr!   )Úlossr   rÅ   )	rV   r½   rÒ   rÜ   rÑ   rý   Úhf_compute_lossr   rÅ   )r8   rc   rþ   r½   r¾   rk   rñ   rÕ   Úflattened_outputr   r  Úoutputs               r;   r@   z#TFRegNetForImageClassification.call,  sô   € ð, %9Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—+‘+ØÐ/CÐQ\Ðgoð ó 
ˆñ 2=˜×-Ò-À'È!Á*ˆà-˜4Ÿ?™?¨1Ñ-¨mÓ<ÐØ#�—‘ Ñ#Ð$4Ó5ˆà�~‰t¨4×+?Ñ+?ÀvÐV\Ð+?Ó+]ˆáØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä)¨t¸FÐRY×RgÑRgÔhÐhr<   c                 ó  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �ot        j                  | j                  d   j
                  «      5  | j                  d   j                  d d d | j                  j                  d   g«       d d d «       y y # 1 sw Y   Œ†xY w# 1 sw Y   y xY w)NTrÜ   rý   r   éÿÿÿÿ)
rD   rE   r6   rF   rÜ   r(   rG   rý   rV   r·   rH   s     r;   rG   z$TFRegNetForImageClassification.buildW  sÝ   € Ø�:Š:ØØˆŒ
Ü�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ (Ø—‘×!Ñ! $Ô'÷(ä�4˜ tÓ,Ð8Ü—‘˜tŸ™¨qÑ1×6Ñ6Ó7ñ [Ø—‘ Ñ"×(Ñ(¨$°°d¸D¿K¹K×<TÑ<TÐUWÑ<XÐ)YÔZ÷[ð [ð 9÷(ð (ú÷[ð [ús   ÁC,Â(:C8Ã,C5Ã8D)NNNNFr>   )rM   rN   rO   r   r1   r   r
   ró   r   Ú_IMAGE_CLASS_CHECKPOINTr   rõ   Ú_IMAGE_CLASS_EXPECTED_OUTPUTr   r6   rp   rq   r   r   r@   rG   rR   rS   s   @r;   rø   rø     sÓ   ø„ ð
˜|õ 
ð Ù*Ð+BÓCÙØ*Ø.Ø$Ø4ô	ð -1Ø&*Ø/3Ø&*Øñ!ià˜rŸy™yÑ)ð!ið ˜Ÿ™Ñ#ð!ið ' t™nð	!ið
 ˜d‘^ð!ið ð!ið 
Ð)¨5°·±Ñ+;Ð;Ñ	<ò!ióó Dó ð!i÷F	[r<   rø   )rø   rè   rÛ   )6rf   Útypingr   r   r   Ú
tensorflowr6   Úactivations_tfr   Ú
file_utilsr   r	   r
   Úmodeling_tf_outputsr   r   r   Úmodeling_tf_utilsr   r   r   r   r   Útf_utilsr   Úutilsr   Úconfiguration_regnetr   Ú
get_loggerrM   Úloggerrõ   rô   rö   r  r  r2   ÚLayerr   rU   rh   rs   r‚   r¢   r©   r³   rË   rÛ   ÚREGNET_START_DOCSTRINGró   rè   rø   Ú__all__r/   r<   r;   ú<module>r     sÖ  ðñ ç )Ñ )ã å $ß qÑ q÷ñ ÷
õ õ #Ý Ý .ð 
ˆ×	Ñ	˜HÓ	%€ð !€ð .Ð Ú(Ð ð 2Ð Ø1Ð ô,P˜Ÿ™×*Ñ*ô ,Pô^%*˜Ÿ™×+Ñ+ô %*ôPP�u—|‘|×)Ñ)ô Pô<"S�e—l‘l×(Ñ(ô "SôJ+&�U—\‘\×'Ñ'ô +&ô\+&�U—\‘\×'Ñ'ô +&ô\&�E—L‘L×&Ñ&ô &ô@,"�e—l‘l×(Ñ(ô ,"ð^ ô=<˜Ÿ™×*Ñ*ó =<ó ð=<ô@sÐ/ô sð
Ð ð
Ð ñ ØUØóô/(Ð+ó /(ó	ð/(ñd ðð óô?[Ð%<Ð>Zó ?[óð?[òD Y�r<   