
    cCiJ_                        S r SSKJrJr  SSKrSSKJr  SSKJ	r	J
r
Jr  SSKJrJrJr  SSKJrJrJrJrJr  SS	KJr  SS
KJr  SSKJr  \R8                  " \5      rSrSr / SQr!Sr"Sr# " S S\RH                  RJ                  5      r& " S S\RH                  RJ                  5      r' " S S\RH                  RJ                  5      r( " S S\RH                  RJ                  5      r) " S S\RH                  RJ                  5      r* " S S\RH                  RJ                  5      r+ " S S\RH                  RJ                  5      r, " S S \RH                  RJ                  5      r-\ " S! S"\RH                  RJ                  5      5       r. " S# S$\5      r/S%r0S&r1\
" S'\05       " S( S)\/5      5       r2\
" S*\05       " S+ S,\/\5      5       r3/ S-Qr4g).zTensorFlow RegNet model.    )Optional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                   f   ^  \ rS rSr    SS\S\S\S\S\S\\   4U 4S jjjrS	 rSS
 jr	Sr
U =r$ )TFRegNetConvLayer6   in_channelsout_channelskernel_sizestridegroups
activationc           
      b  > [         TU ]  " S0 UD6  [        R                  R	                  US-  S9U l        [        R                  R                  UUUSUSSS9U l        [        R                  R                  SSS	S
9U l	        Ub	  [        U   O[        R                  U l        Xl        X l        g )N   )paddingVALIDFconvolution)filtersr   stridesr"   r   use_biasnameh㈵>?normalizationepsilonmomentumr(    )super__init__r   layersZeroPadding2Dr"   Conv2Dr$   BatchNormalizationr+   r   tfidentityr   r   r   )	selfr   r   r   r   r   r   kwargs	__class__s	           g/home/james-whalen/.local/lib/python3.13/site-packages/transformers/models/regnet/modeling_tf_regnet.pyr1   TFRegNetConvLayer.__init__7   s     	"6" ||11+:J1K <<.. # / 
 #\\<<TTW^m<n0:0F&,BKK&(    c                     U R                  U R                  U5      5      nU R                  U5      nU R                  U5      nU$ N)r$   r"   r+   r   )r8   hidden_states     r;   callTFRegNetConvLayer.callS   s?    ''\(BC)),7|4r=   c                 $   U R                   (       a  g SU l         [        U SS 5      b\  [        R                  " U R                  R
                  5         U R                  R                  S S S U R                  /5        S S S 5        [        U SS 5      b]  [        R                  " U R                  R
                  5         U R                  R                  S S S U R                  /5        S S S 5        g g ! , (       d  f       Nz= f! , (       d  f       g = fNTr$   r+   
builtgetattrr6   
name_scoper$   r(   buildr   r+   r   r8   input_shapes     r;   rI   TFRegNetConvLayer.buildY       ::
4-9t//445  &&dD$:J:J'KL 64$/;t11667""(($dD<M<M)NO 87 < 65 87   *C0<*D0
C>
D)r   rF   r$   r   r+   r   r"   )r   r   r   relur?   )__name__
__module____qualname____firstlineno__intr   strr1   rA   rI   __static_attributes____classcell__r:   s   @r;   r   r   6   sj    
 $*)) ) 	)
 ) ) SM) )8	P 	Pr=   r   c                   D   ^  \ rS rSrSrS\4U 4S jjrS rSS jrSr	U =r
$ )	TFRegNetEmbeddingse   zG
RegNet Embeddings (stem) composed of a single aggressive convolution.
configc           	         > [         TU ]  " S0 UD6  UR                  U l        [        UR                  UR                  SSUR
                  SS9U l        g )Nr   r!   embedder)r   r   r   r   r   r(   r/   )r0   r1   num_channelsr   embedding_size
hidden_actr^   r8   r\   r9   r:   s      r;   r1   TFRegNetEmbeddings.__init__j   sQ    "6""//)++..((
r=   c                     [        U5      S   n[        R                  " 5       (       a  X R                  :w  a  [	        S5      e[        R
                  " USS9nU R                  U5      nU$ )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_eagerlyr_   
ValueError	transposer^   )r8   pixel_valuesr_   r@   s       r;   rA   TFRegNetEmbeddings.callv   sa    !,/2!!l6G6G&Gw  ||L|D}}\2r=   c                    U R                   (       a  g SU l         [        U SS 5      bO  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        g g ! , (       d  f       g = f)NTr^   )rF   rG   r6   rH   r^   r(   rI   rJ   s     r;   rI   TFRegNetEmbeddings.build   s^    ::
4T*6t}}112##D) 32 722   A88
B)rF   r^   r_   r?   )rP   rQ   rR   rS   __doc__r   r1   rA   rI   rV   rW   rX   s   @r;   rZ   rZ   e   s#    

| 

* *r=   rZ   c                      ^  \ rS rSrSrSS\S\S\4U 4S jjjrSS\R                  S\	S	\R                  4S
 jjr
SS jrSrU =r$ )TFRegNetShortCut   z
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U ]  " S	0 UD6  [        R                  R	                  USUSSS9U l        [        R                  R                  SSSS9U l        Xl        X l	        g )
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   TFRegNetShortCut.__init__   si    "6" <<.. a%Vc / 
 #\\<<TTW^m<n&(r=   inputstrainingreturnc                 @    U R                  U R                  U5      US9$ )Nrv   )r+   r$   )r8   ru   rv   s      r;   rA   TFRegNetShortCut.call   s#    !!$"2"26":X!NNr=   c                 $   U R                   (       a  g SU l         [        U SS 5      b\  [        R                  " U R                  R
                  5         U R                  R                  S S S U R                  /5        S S S 5        [        U SS 5      b]  [        R                  " U R                  R
                  5         U R                  R                  S S S U R                  /5        S S S 5        g g ! , (       d  f       Nz= f! , (       d  f       g = frD   rE   rJ   s     r;   rI   TFRegNetShortCut.build   rM   rN   )rF   r$   r   r+   r   )r!   )Fr?   )rP   rQ   rR   rS   ro   rT   r1   r6   TensorboolrA   rI   rV   rW   rX   s   @r;   rq   rq      sY    
)C )s )C ) )O299 O O O	P 	Pr=   rq   c                   H   ^  \ rS rSrSrS\S\4U 4S jjrS rS	S jrSr	U =r
$ )
TFRegNetSELayer   z|
Squeeze and Excitation layer (SE) proposed in [Squeeze-and-Excitation Networks](https://huggingface.co/papers/1709.01507).
r   reduced_channelsc                   > [         TU ]  " S
0 UD6  [        R                  R	                  SSS9U l        [        R                  R                  USSSS9[        R                  R                  USSS	S9/U l        Xl        X l	        g )NTpoolerkeepdimsr(   r   rO   zattention.0)r%   r   r   r(   sigmoidzattention.2r/   )
r0   r1   r   r2   GlobalAveragePooling2Dr   r4   	attentionr   r   )r8   r   r   r9   r:   s       r;   r1   TFRegNetSELayer.__init__   s    "6"ll994h9WLL(8aTZanoLLy_lm
 ' 0r=   c                 f    U R                  U5      nU R                   H  nU" U5      nM     X-  nU$ r?   )r   r   )r8   r@   pooledlayer_modules       r;   rA   TFRegNetSELayer.call   s6    \* NNL!&)F +#,r=   c                    U R                   (       a  g SU l         [        U SS 5      bN  [        R                  " U R                  R
                  5         U R                  R                  S5        S S S 5        [        U SS 5      b  [        R                  " U R                  S   R
                  5         U R                  S   R                  S S S U R                  /5        S S S 5        [        R                  " U R                  S   R
                  5         U R                  S   R                  S S S U R                  /5        S S S 5        g g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NTr   NNNNr   r   r   )
rF   rG   r6   rH   r   r(   rI   r   r   r   rJ   s     r;   rI   TFRegNetSELayer.build   s   ::
44(4t{{//0!!":; 14d+7t~~a0556q!''tT4;K;K(LM 7t~~a0556q!''tT4;P;P(QR 76 8 10 7666s$   E
1-E-E,

E
E),
E:)r   rF   r   r   r   r?   )rP   rQ   rR   rS   ro   rT   r1   rA   rI   rV   rW   rX   s   @r;   r   r      s,    1C 13 1S Sr=   r   c            	       T   ^  \ rS rSrSrSS\S\S\S\4U 4S jjjrS rSS	 jr	S
r
U =r$ )TFRegNetXLayer   zl
RegNet's layer composed by three `3x3` convolutions, same as a ResNet bottleneck layer with reduction = 1.
r\   r   r   r   c           
        > [         TU ]  " S0 UD6  X#:g  =(       d    US:g  n[        SX1R                  -  5      nU(       a  [	        X#USS9O[
        R                  R                  SSS9U l        [        X#SUR                  SS9[        X3XGUR                  SS	9[        X3SS S
S9/U l        [        UR                     U l        g )Nr   shortcutr   r(   linearr(   layer.0r   r   r(   layer.1r   r   r   r(   layer.2r/   )r0   r1   maxgroups_widthrq   r   r2   
Activationr   r   ra   r   r   	r8   r\   r   r   r   r9   should_apply_shortcutr   r:   s	           r;   r1   TFRegNetXLayer.__init__   s    "6" + ; Jv{Q(;(;;< % [vJW((
(C 	 kQSYSdSdktu6U[UfUfmv laTX_hi
 !!2!23r=   c                     UnU R                    H  nU" U5      nM     U R                  U5      nX-  nU R                  U5      nU$ r?   r2   r   r   r8   r@   residualr   s       r;   rA   TFRegNetXLayer.call   I     KKL'5L (==* |4r=   c                    U R                   (       a  g SU l         [        U SS 5      bN  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        [        U SS 5      bN  U R                   H=  n[        R                  " UR
                  5         UR                  S 5        S S S 5        M?     g g ! , (       d  f       Nk= f! , (       d  f       Mc  = fNTr   r2   rF   rG   r6   rH   r   r(   rI   r2   r8   rK   layers      r;   rI   TFRegNetXLayer.build       ::
4T*6t}}112##D) 344(4]]5::.KK% /. % 5 32 /.   C3C$
C!$
C3	r   rF   r2   r   r   r?   rP   rQ   rR   rS   ro   r   rT   r1   rA   rI   rV   rW   rX   s   @r;   r   r      >    4| 4# 4S 4Z] 4 4&
& 
&r=   r   c            	       T   ^  \ rS rSrSrSS\S\S\S\4U 4S jjjrS rSS	 jr	S
r
U =r$ )TFRegNetYLayer   z;
RegNet's Y layer: an X layer with Squeeze and Excitation.
r\   r   r   r   c                   > [         TU ]  " S0 UD6  X#:g  =(       d    US:g  n[        SX1R                  -  5      nU(       a  [	        X#USS9O[
        R                  R                  SSS9U l        [        X#SUR                  SS9[        X3XGUR                  SS	9[        U[        [        US
-  5      5      SS9[        X3SS SS9/U l        [        UR                     U l        g )Nr   r   r   r   r   r   r   r   r      r   )r   r(   zlayer.3r/   )r0   r1   r   r   rq   r   r2   r   r   r   ra   r   rT   roundr   r   r   s	           r;   r1   TFRegNetYLayer.__init__  s    "6" + ; Jv{Q(;(;;< % [vJW((
(C 	 kQSYSdSdktu6U[UfUfmv L3u[ST_?U;V]fglaTX_hi
 !!2!23r=   c                     UnU R                    H  nU" U5      nM     U R                  U5      nX-  nU R                  U5      nU$ r?   r   r   s       r;   rA   TFRegNetYLayer.call  r   r=   c                    U R                   (       a  g SU l         [        U SS 5      bN  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        [        U SS 5      bN  U R                   H=  n[        R                  " UR
                  5         UR                  S 5        S S S 5        M?     g g ! , (       d  f       Nk= f! , (       d  f       Mc  = fr   r   r   s      r;   rI   TFRegNetYLayer.build  r   r   r   r   r?   r   rX   s   @r;   r   r      r   r=   r   c                   Z   ^  \ rS rSrSr SS\S\S\S\S\4
U 4S jjjrS	 rSS
 jr	Sr
U =r$ )TFRegNetStagei,  z,
A RegNet stage composed by stacked layers.
r\   r   r   r   depthc                    > [         T	U ]  " S0 UD6  UR                  S:X  a  [        O[        nU" XX4SS9/[        US-
  5       Vs/ s H  o" XUSUS-    3S9PM     snQU l        g s  snf )Nxzlayers.0r   r   zlayers.r   r/   )r0   r1   
layer_typer   r   ranger2   )
r8   r\   r   r   r   r   r9   r   ir:   s
            r;   r1   TFRegNetStage.__init__1  s     	"6""("3"3s": &|T
 Z__dgh_hYijYiTUeF,wq1ug=NOYij
 ks   A'c                 <    U R                    H  nU" U5      nM     U$ r?   )r2   )r8   r@   r   s      r;   rA   TFRegNetStage.call=  s      KKL'5L (r=   c                    U R                   (       a  g SU l         [        U SS 5      bN  U R                   H=  n[        R                  " UR
                  5         UR                  S 5        S S S 5        M?     g g ! , (       d  f       MR  = f)NTr2   )rF   rG   r2   r6   rH   r(   rI   r   s      r;   rI   TFRegNetStage.buildB  s`    ::
44(4]]5::.KK% /. % 5..s   A77
B	)rF   r2   )r!   r!   r?   r   rX   s   @r;   r   r   ,  sP    
 hi

"

14

DG

QT

ad

 


& &r=   r   c            	       n   ^  \ rS rSrS\4U 4S jjr SS\R                  S\S\S\	4S jjr
SS	 jrS
rU =r$ )TFRegNetEncoderiL  r\   c                   > [         TU ]  " S0 UD6  / U l        U R                  R                  [	        UUR
                  UR                  S   UR                  (       a  SOSUR                  S   SS95        [        UR                  UR                  SS  5      n[        [        X1R                  SS  5      5       H5  u  nu  u  pVnU R                  R                  [	        XXgSUS-    3S95        M7     g )	Nr   r!   r   zstages.0)r   r   r(   zstages.)r   r(   r/   )r0   r1   stagesappendr   r`   hidden_sizesdownsample_in_first_stagedepthszip	enumerate)	r8   r\   r9   in_out_channelsr   r   r   r   r:   s	           r;   r1   TFRegNetEncoder.__init__M  s    "6"%%##A&"<<q!mmA&		
 f1163F3Fqr3JK7@_VcVcdedfVgAh7i3A3+UKK}V,dklmpqlqkrbstu 8jr=   r@   output_hidden_statesreturn_dictrw   c                     U(       a  SOS nU R                    H  nU(       a  XA4-   nU" U5      nM     U(       a  XA4-   nU(       d  [        S X4 5       5      $ [        XS9$ )Nr/   c              3   .   #    U  H  oc  M  Uv   M     g 7fr?   r/   ).0vs     r;   	<genexpr>'TFRegNetEncoder.call.<locals>.<genexpr>n  s     S$Aq$As   	)last_hidden_statehidden_states)r   tupler
   )r8   r@   r   r   r   stage_modules         r;   rA   TFRegNetEncoder.call_  sc     3 KKL# - ?'5L	 (  )O;MS\$ASSS/,llr=   c                     U R                   (       a  g SU l         U R                   H=  n[        R                  " UR                  5         UR                  S 5        S S S 5        M?     g ! , (       d  f       MQ  = f)NT)rF   r   r6   rH   r(   rI   )r8   rK   stages      r;   rI   TFRegNetEncoder.buildr  sL    ::
[[Euzz*D! +* !**s   	A((
A7	)rF   r   )FTr?   )rP   rQ   rR   rS   r   r1   r6   r}   r~   r
   rA   rI   rV   rW   rX   s   @r;   r   r   L  sP    v| v& `dmIIm=AmX\m	)m&" "r=   r   c                      ^  \ rS rSr\rU 4S jr\   SS\R                  S\
\   S\
\   S\S\4
S jj5       rSS	 jrS
rU =r$ )TFRegNetMainLayeri{  c                    > [         TU ]  " S0 UD6  Xl        [        USS9U l        [        USS9U l        [        R                  R                  SSS9U l
        g )Nr^   r   encoderTr   r   r/   )r0   r1   r\   rZ   r^   r   r   r   r2   r   r   rb   s      r;   r1   TFRegNetMainLayer.__init__  sO    "6"*6
C&vI>ll994h9Wr=   rj   r   r   rv   rw   c                    Ub  UOU R                   R                  nUb  UOU R                   R                  nU R                  XS9nU R	                  XRX4S9nUS   nU R                  U5      n[        R                  " USS9n[        R                  " USS9nU(       a  [        S US    5       5      n	U(       d	  Xx4USS  -   $ [        UUU(       a  W	S9$ UR                  S9$ )	Nry   r   r   rv   r   r   r   r   r!   re   c              3   L   #    U  H  n[         R                  " US S9v   M     g7f)r   re   N)r6   ri   )r   hs     r;   r   )TFRegNetMainLayer.call.<locals>.<genexpr>  s     !aN`",,q|"DN`s   "$r   r   pooler_outputr   )r\   r   use_return_dictr^   r   r   r6   ri   r   r   r   )
r8   rj   r   r   rv   embedding_outputencoder_outputsr   pooled_outputr   s
             r;   rA   TFRegNetMainLayer.call  s    %9$D $++JjJj 	 &1%<k$++B]B]===I,,U` ' 
 ,A.$56 ]FLL):N  !!ao^_N`!aaM%58KKK9/'+?-
 	
 FUEbEb
 	
r=   c                    U R                   (       a  g SU l         [        U SS 5      bN  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        [        U SS 5      bN  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        [        U SS 5      bO  [        R                  " U R                  R
                  5         U R                  R                  S5        S S S 5        g g ! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       g = f)NTr^   r   r   r   )	rF   rG   r6   rH   r^   r(   rI   r   r   rJ   s     r;   rI   TFRegNetMainLayer.build  s    ::
4T*6t}}112##D) 34D)5t||001""4( 244(4t{{//0!!":; 10 5 32 21 10s$   D0.E
E0
D>
E
E )rF   r\   r^   r   r   NNFr?   )rP   rQ   rR   rS   r   config_classr1   r   r6   r}   r   r~   r   rA   rI   rV   rW   rX   s   @r;   r   r   {  st    LX  04&*$
ii$
 'tn$
 d^	$

 $
 
4$
 $
L< <r=   r   c                   4    \ rS rSrSr\rSrSr\	S 5       r
Srg)TFRegNetPreTrainedModeli  zz
An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
models.
regnetrj   c                 |    S[         R                  " S U R                  R                  SS4[         R                  S90$ )Nrj      )shapedtype)r6   
TensorSpecr\   r_   float32)r8   s    r;   input_signature'TFRegNetPreTrainedModel.input_signature  s4    T4;;;S;SUXZ]4^fhfpfp qrrr=   r/   N)rP   rQ   rR   rS   ro   r   r   base_model_prefixmain_input_namepropertyr
  rV   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                      ^  \ rS rSrS\4U 4S jjr\\" \5      \	" \
\\S\S9   SS\R                  S\\   S\\   S	\S
\\\\R                     4   4
S jj5       5       5       rSS jrSrU =r$ )TFRegNetModeli  r\   c                 L   > [         TU ]  " U/UQ70 UD6  [        USS9U l        g )Nr  r   )r0   r1   r   r  r8   r\   ru   r9   r:   s       r;   r1   TFRegNetModel.__init__  s(    3&3F3'X>r=   vision)
checkpointoutput_typer   modalityexpected_outputrj   r   r   rv   rw   c                 
   Ub  UOU R                   R                  nUb  UOU R                   R                  nU R                  UUUUS9nU(       d  US   4USS  -   $ [	        UR
                  UR                  UR                  S9$ )N)rj   r   r   rv   r   r   r   )r\   r   r   r  r   r   r   r   )r8   rj   r   r   rv   outputss         r;   rA   TFRegNetModel.call  s    " %9$D $++JjJj 	 &1%<k$++B]B]++%!5#	  
 AJ=712;..9%77!//!//
 	
r=   c                    U R                   (       a  g SU l         [        U SS 5      bO  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        g g ! , (       d  f       g = f)NTr  )rF   rG   r6   rH   r  r(   rI   rJ   s     r;   rI   TFRegNetModel.build  s^    ::
44(4t{{//0!!$' 10 500rn   )rF   r  r   r?   )rP   rQ   rR   rS   r   r1   r   r	   REGNET_INPUTS_DOCSTRINGr   _CHECKPOINT_FOR_DOCr   _CONFIG_FOR_DOC_EXPECTED_OUTPUT_SHAPEr6   r}   r   r~   r   r   rA   rI   rV   rW   rX   s   @r;   r  r    s    
?| ? *+BC&>$. 04&*
ii
 'tn
 d^	

 
 
95;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                     ^  \ rS rSrS\4U 4S jjr\\" \5      \	" \
\\\S9     SS\\R                      S\\R                      S\\   S\\   S	\S
\\\\R                      4   4S jj5       5       5       rSS jrSrU =r$ )TFRegNetForImageClassificationi  r\   c                 D  > [         TU ]  " U/UQ70 UD6  UR                  U l        [        USS9U l        [
        R                  R                  5       UR                  S:  a(  [
        R                  R                  UR                  SS9O[        R                  /U l        g )Nr  r   r   zclassifier.1)r0   r1   
num_labelsr   r  r   r2   FlattenDenser6   r7   
classifierr  s       r;   r1   'TFRegNetForImageClassification.__init__"  s    3&3F3 ++'X> LL  "JPJ[J[^_J_ELLv00~Fegepep
r=   )r  r  r   r  rj   labelsr   r   rv   rw   c                    Ub  UOU R                   R                  nUb  UOU R                   R                  nU R                  XXES9nU(       a  UR                  OUS   nU R
                  S   " U5      nU R
                  S   " U5      n	Uc  SOU R                  X)S9n
U(       d  U	4USS -   nU
b  U
4U-   $ U$ [        XUR                  S9$ )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   )	r\   r   r   r  r   r(  hf_compute_lossr   r   )r8   rj   r*  r   r   rv   r  r   flattened_outputr,  r-  outputs               r;   rA   #TFRegNetForImageClassification.call,  s    , %9$D $++JjJj 	 &1%<k$++B]B]++Q\  
 2=--'!*??1-m<#$45~t4+?+?v+?+]Y,F)-)9TGf$EvE)tRYRgRghhr=   c                 .   U R                   (       a  g SU l         [        U SS 5      bN  [        R                  " U R                  R
                  5         U R                  R                  S 5        S S S 5        [        U SS 5      bp  [        R                  " U R                  S   R
                  5         U R                  S   R                  S S S U R                  R                  S   /5        S S S 5        g g ! , (       d  f       N= f! , (       d  f       g = f)NTr  r(  r   )
rF   rG   r6   rH   r  r(   rI   r(  r\   r   rJ   s     r;   rI   $TFRegNetForImageClassification.buildW  s    ::
44(4t{{//0!!$' 14t,8tq1667"(($dDKK<T<TUW<X)YZ 87 9 10 87s   C51:D5
D
D)rF   r(  r%  r  )NNNNFr?   )rP   rQ   rR   rS   r   r1   r   r	   r  r   _IMAGE_CLASS_CHECKPOINTr   r   _IMAGE_CLASS_EXPECTED_OUTPUTr   r6   r}   r~   r   r   rA   rI   rV   rW   rX   s   @r;   r#  r#    s    
| 
 *+BC*.$4	 -1&*/3&*!iryy)!i #!i 'tn	!i
 d^!i !i 
)5+;;	<!i D !iF	[ 	[r=   r#  )r#  r  r  )5ro   typingr   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_loggerrP   loggerr   r  r!  r5  r6  r2   Layerr   rZ   rq   r   r   r   r   r   r   r  REGNET_START_DOCSTRINGr  r  r#  __all__r/   r=   r;   <module>rE     s    "  $ q q 
  #  . 
		H	% ! . (  2 1 ,P** ,P^%*++ %*PPu||)) P<"Sell(( "SJ+&U\\'' +&\+&U\\'' +&\&ELL&& &@,"ell(( ,"^ =<** =< =<@s/ s
 
  U/(+ /(	/(d  ?[%<>Z ?[?[D Yr=   