
     `iJ_                     <   d Z ddl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j$        j%                  Z& G d dej$        j%                  Z' G d dej$        j%                  Z( G d dej$        j%                  Z) G d dej$        j%                  Z* G d dej$        j%                  Z+ G d dej$        j%                  Z, G d d ej$        j%                  Z-e G d! d"ej$        j%                              Z. G d# d$e          Z/d%Z0d&Z1 e
d'e0           G d( d)e/                      Z2 e
d*e0           G d+ d,e/e                      Z3g d-Z4dS ).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                   \     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 )TFRegNetConvLayerr   r   reluin_channelsout_channelskernel_sizestridegroups
activationc           	          t                      j        di | t          j                            |dz            | _        t          j                            |||d|dd          | _        t          j                            ddd	
          | _	        |t          |         nt          j        | _        || _        || _        d S )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	           /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/transformers/models/regnet/modeling_tf_regnet.pyr1   zTFRegNetConvLayer.__init__7   s     	""6""" |11+:J1KK <.. # / 
 
 #\<<TTW^m<nn0:0F&,,BK&(    c                     |                      |                     |                    }|                     |          }|                     |          }|S N)r$   r"   r+   r   )r8   hidden_states     r;   callzTFRegNetConvLayer.callS   sK    ''\(B(BCC)),77|44r<   Nc                    | j         rd S d| _         t          | dd           Yt          j        | j        j                  5  | j                            d d d | j        g           d d d            n# 1 swxY w Y   t          | dd           \t          j        | j        j                  5  | j                            d d d | j	        g           d d d            d S # 1 swxY w Y   d S d S NTr$   r+   
builtgetattrr6   
name_scoper$   r(   buildr   r+   r   r8   input_shapes     r;   rG   zTFRegNetConvLayer.buildY      : 	F
4--9t/455 M M &&dD$:J'KLLLM M M M M M M M M M M M M M M4$//;t1677 P P"(($dD<M)NOOOP P P P P P P P P P P P P P P P P P <;$    $A00A47A4*$CC"C)r   r   r   r   r>   )
__name__
__module____qualname__intr   strr1   r@   rG   __classcell__r:   s   @r;   r   r   6   s        
 $*) )) ) 	)
 ) ) SM) ) ) ) ) )8  	P 	P 	P 	P 	P 	P 	P 	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                      j        di | |j        | _        t          |j        |j        dd|j        d          | _        d S )Nr   r!   embedder)r   r   r   r   r   r(   r/   )r0   r1   num_channelsr   embedding_size
hidden_actrW   r8   rU   r9   r:   s      r;   r1   zTFRegNetEmbeddings.__init__j   s`    ""6""""/)+.(
 
 
r<   c                     t          |          d         }t          j                    r|| j        k    rt	          d          t          j        |d          }|                     |          }|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_eagerlyrX   
ValueError	transposerW   )r8   pixel_valuesrX   r?   s       r;   r@   zTFRegNetEmbeddings.callv   st    !,//2!! 	ld6G&G&Gw   |L|DDD}}\22r<   Nc                     | j         rd S d| _         t          | dd           St          j        | j        j                  5  | j                            d            d d d            d S # 1 swxY w Y   d S d S )NTrW   )rD   rE   r6   rF   rW   r(   rG   rH   s     r;   rG   zTFRegNetEmbeddings.build   s    : 	F
4T**6t}122 * *##D)))* * * * * * * * * * * * * * * * * * 76    A((A,/A,r>   )	rL   rM   rN   __doc__r   r1   r@   rG   rQ   rR   s   @r;   rT   rT   e   sq         

| 

 

 

 

 

 

  * * * * * * * *r<   rT   c                   d     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   r   c                      t                      j        d	i | t          j                            |d|dd          | _        t          j                            ddd          | _        || _        || _	        d S )
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__   s    ""6""" <.. a%Vc / 
 
 #\<<TTW^m<nn&(r<   Finputstrainingreturnc                 V    |                      |                     |          |          S )Nrj   )r+   r$   )r8   ri   rj   s      r;   r@   zTFRegNetShortCut.call   s)    !!$"2"26":":X!NNNr<   Nc                    | j         rd S d| _         t          | dd           Yt          j        | j        j                  5  | j                            d d d | j        g           d d d            n# 1 swxY w Y   t          | dd           \t          j        | j        j                  5  | j                            d d d | j	        g           d d d            d S # 1 swxY w Y   d S d S rB   rC   rH   s     r;   rG   zTFRegNetShortCut.build   rJ   rK   )r!   )Fr>   )rL   rM   rN   re   rO   r1   r6   Tensorboolr@   rG   rQ   rR   s   @r;   rg   rg      s         
) )C )s )C ) ) ) ) ) )O O29 O O O O O O	P 	P 	P 	P 	P 	P 	P 	Pr<   rg   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://huggingface.co/papers/1709.01507).
    r   reduced_channelsc                 8    t                      j        d
i | t          j                            dd          | _        t          j                            |ddd          t          j                            |ddd	          g| _        || _        || _	        d S )NTpoolerkeepdimsr(   r   r   zattention.0)r%   r   r   r(   sigmoidzattention.2r/   )
r0   r1   r   r2   GlobalAveragePooling2Dru   r4   	attentionr   rs   )r8   r   rs   r9   r:   s       r;   r1   zTFRegNetSELayer.__init__   s    ""6"""l994h9WWL(8aTZanooLy_lmm
 ' 0r<   c                 d    |                      |          }| j        D ]} ||          }||z  }|S r>   )ru   rz   )r8   r?   pooledlayer_modules       r;   r@   zTFRegNetSELayer.call   sE    \** N 	* 	*L!\&))FF#f,r<   Nc                    | j         rd S d| _         t          | dd           Pt          j        | j        j                  5  | j                            d           d d d            n# 1 swxY w Y   t          | dd           t          j        | j        d         j                  5  | j        d                             d d d | j        g           d d d            n# 1 swxY w Y   t          j        | j        d         j                  5  | j        d                             d d d | j	        g           d d d            d S # 1 swxY w Y   d S d S )NTru   NNNNrz   r   r   )
rD   rE   r6   rF   ru   r(   rG   rz   r   rs   rH   s     r;   rG   zTFRegNetSELayer.build   s%   : 	F
44((4t{/00 < <!!":;;;< < < < < < < < < < < < < < <4d++7t~a0566 N Nq!''tT4;K(LMMMN N N N N N N N N N N N N N Nt~a0566 S Sq!''tT4;P(QRRRS S S S S S S S S S S S S S S S S S 87s6    A''A+.A+'*CC!$C!*EE
Er>   )	rL   rM   rN   re   rO   r1   r@   rG   rQ   rR   s   @r;   rr   rr      s         1C 13 1 1 1 1 1 1  S S S S S S S Sr<   rr   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.
    r   rU   r   r   r   c           	          t                      j        di | ||k    p|dk    }t          d||j        z            }|rt	          |||d          n t
          j                            dd          | _        t          ||d|j
        d          t          |||||j
        d	          t          ||dd d
          g| _        t          |j
                 | _        d S )Nr   shortcutr   r(   linearr(   layer.0r   r   r(   layer.1r   r   r   r(   layer.2r/   )r0   r1   maxgroups_widthrg   r   r2   
Activationr   r   rZ   r   r   	r8   rU   r   r   r   r9   should_apply_shortcutr   r:   s	           r;   r1   zTFRegNetXLayer.__init__   s   ""6""" +| ; Jv{Q(;;<< %D[,vJWWWW((
(CC 	 k<QSYSdktuuul6&U[Ufmv   lLaTX_hiii
 !!23r<   c                     |}| j         D ]} ||          }|                     |          }||z  }|                     |          }|S r>   r2   r   r   r8   r?   residualr}   s       r;   r@   zTFRegNetXLayer.call   [     K 	6 	6L'<55LL==** |44r<   Nc                    | j         rd S d| _         t          | dd           Pt          j        | j        j                  5  | j                            d            d d d            n# 1 swxY w Y   t          | dd           P| j        D ]J}t          j        |j                  5  |                    d            d d d            n# 1 swxY w Y   Id S d S NTr   r2   rD   rE   r6   rF   r   r(   rG   r2   r8   rI   layers      r;   rG   zTFRegNetXLayer.build   Y   : 	F
4T**6t}122 * *##D)))* * * * * * * * * * * * * * *44((4 & &]5:.. & &KK%%%& & & & & & & & & & & & & & & 54& &$    A''A+.A+%CC	C	r   r>   
rL   rM   rN   re   r   rO   r1   r@   rG   rQ   rR   s   @r;   r   r               4 4| 4# 4S 4Z] 4 4 4 4 4 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.
    r   rU   r   r   r   c                     t                      j        di | ||k    p|dk    }t          d||j        z            }|rt	          |||d          n t
          j                            dd          | _        t          ||d|j
        d          t          |||||j
        d	          t          |t          t          |d
z                      d          t          ||dd d          g| _        t          |j
                 | _        d S )Nr   r   r   r   r   r   r   r   r      r   )rs   r(   zlayer.3r/   )r0   r1   r   r   rg   r   r2   r   r   r   rZ   rr   rO   roundr   r   r   s	           r;   r1   zTFRegNetYLayer.__init__  s-   ""6""" +| ; Jv{Q(;;<< %D[,vJWWWW((
(CC 	 k<QSYSdktuuul6&U[Ufmv   L3u[ST_?U?U;V;V]fggglLaTX_hiii
 !!23r<   c                     |}| j         D ]} ||          }|                     |          }||z  }|                     |          }|S r>   r   r   s       r;   r@   zTFRegNetYLayer.call  r   r<   Nc                    | j         rd S d| _         t          | dd           Pt          j        | j        j                  5  | j                            d            d d d            n# 1 swxY w Y   t          | dd           P| j        D ]J}t          j        |j                  5  |                    d            d d d            n# 1 swxY w Y   Id S d S r   r   r   s      r;   rG   zTFRegNetYLayer.build  r   r   r   r>   r   rR   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.
    r!   rU   r   r   r   depthc                      t                      j        di | j        dk    rt          nt           ||d          gfdt          |dz
            D             | _        d S )Nxzlayers.0r   c           
      :    g | ]} d |dz              S )zlayers.r   r   r/   ).0irU   r   r   s     r;   
<listcomp>z*TFRegNetStage.__init__.<locals>.<listcomp>:  s:    jjjTUeeFL,=Nq1u=N=NOOOjjjr<   r   r/   )r0   r1   
layer_typer   r   ranger2   )	r8   rU   r   r   r   r   r9   r   r:   s	    ` `   @r;   r1   zTFRegNetStage.__init__1  s     	""6""""("3s":": E&+|FTTT
 kjjjjjY^_dgh_hYiYijjj
r<   c                 0    | j         D ]} ||          }|S r>   )r2   )r8   r?   r}   s      r;   r@   zTFRegNetStage.call=  s*     K 	6 	6L'<55LLr<   Nc                     | j         rd S d| _         t          | dd           P| j        D ]J}t          j        |j                  5  |                    d            d d d            n# 1 swxY w Y   Id S d S )NTr2   )rD   rE   r2   r6   rF   r(   rG   r   s      r;   rG   zTFRegNetStage.buildB  s    : 	F
44((4 & &]5:.. & &KK%%%& & & & & & & & & & & & & & & 54& &s   A&&A*	-A*	)r!   r!   r>   r   rR   s   @r;   r   r   ,  s         
 hi

 

"

14

DG

QT

ad

 

 

 

 

 

  
& & & & & & & &r<   r   c            	       R     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 )TFRegNetEncoderrU   c                     t                      j        di | g | _        | 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                            t	          ||||d|dz                         >d S )	Nr   r!   r   zstages.0)r   r   r(   zstages.)r   r(   r/   )r0   r1   stagesappendr   rY   hidden_sizesdownsample_in_first_stagedepthszip	enumerate)	r8   rU   r9   in_out_channelsr   r   r   r   r:   s	           r;   r1   zTFRegNetEncoder.__init__M  s.   ""6"""%#A&"<Cqq!mA&  		
 		
 		
 f163Fqrr3JKK7@_V\VcdedfdfVgAhAh7i7i 	v 	v3A3+lUK}V[,V[bslmpqlqbsbstttuuuu	v 	vr<   FTr?   output_hidden_statesreturn_dictrk   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   | ]}||V  	d S r>   r/   )r   vs     r;   	<genexpr>z'TFRegNetEncoder.call.<locals>.<genexpr>n  s"      SSqQ]]]]]SSr<   )last_hidden_statehidden_states)r   tupler
   )r8   r?   r   r   r   stage_modules         r;   r@   zTFRegNetEncoder.call_  s     3< K 	6 	6L# @ - ?'<55LL 	<)\O;M 	TSS\=$ASSSSSS/,^kllllr<   Nc                     | j         rd S d| _         | j        D ]H}t          j        |j                  5  |                    d            d d d            n# 1 swxY w Y   Id S )NT)rD   r   r6   rF   r(   rG   )r8   rI   stages      r;   rG   zTFRegNetEncoder.buildr  s    : 	F
[ 	" 	"Euz** " "D!!!" " " " " " " " " " " " " " "	" 	"s   AA	A	)FTr>   )rL   rM   rN   r   r1   r6   ro   rp   r
   r@   rG   rQ   rR   s   @r;   r   r   L  s        v| v v v v v v& `dm mIm=AmX\m	)m m m m&" " " " " " " "r<   r   c                        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                      j        di | || _        t          |d          | _        t          |d          | _        t          j        	                    dd          | _
        d S )NrW   r   encoderTru   rv   r/   )r0   r1   rU   rT   rW   r   r   r   r2   ry   ru   r[   s      r;   r1   zTFRegNetMainLayer.__init__  so    ""6"""*6
CCC&vI>>>l994h9WWr<   NFrb   r   r   rj   rk   c                    ||n| j         j        }||n| j         j        }|                     ||          }|                     ||||          }|d         }|                     |          }t          j        |d          }t          j        |d          }|rt          d |d         D                       }	|s||f|dd          z   S t          |||r|	n|j
                  S )	Nrm   r   r   rj   r   r   r   r   r!   r]   c              3   B   K   | ]}t          j        |d           V  dS )r   r]   N)r6   ra   )r   hs     r;   r   z)TFRegNetMainLayer.call.<locals>.<genexpr>  s1      !a!a",q|"D"D"D!a!a!a!a!a!ar<   r   r   pooler_outputr   )rU   r   use_return_dictrW   r   ru   r6   ra   r   r   r   )
r8   rb   r   r   rj   embedding_outputencoder_outputsr   pooled_outputr   s
             r;   r@   zTFRegNetMainLayer.call  s1    %9$D  $+Jj 	 &1%<kk$+B]===II,,3GU`ks ' 
 
 ,A.$566 ]FFFL):NNN   	b!!a!ao^_N`!a!a!aaaM 	L%}58KKK9/'+?b--_Eb
 
 
 	
r<   c                 r   | j         rd S d| _         t          | dd           Pt          j        | j        j                  5  | j                            d            d d d            n# 1 swxY w Y   t          | dd           Pt          j        | j        j                  5  | j                            d            d d d            n# 1 swxY w Y   t          | dd           St          j        | j        j                  5  | j                            d           d d d            d S # 1 swxY w Y   d S d S )NTrW   r   ru   r   )	rD   rE   r6   rF   rW   r(   rG   r   ru   rH   s     r;   rG   zTFRegNetMainLayer.build  s   : 	F
4T**6t}122 * *##D)))* * * * * * * * * * * * * * *4D))5t|011 ) )""4((() ) ) ) ) ) ) ) ) ) ) ) ) ) )44((4t{/00 < <!!":;;;< < < < < < < < < < < < < < < < < < 54s6    A''A+.A+!CCCD**D.1D.NNFr>   )rL   rM   rN   r   config_classr1   r   r6   ro   r   rp   r   r@   rG   rQ   rR   s   @r;   r   r   {  s        LX X X X X  04&*$
 $
i$
 'tn$
 d^	$

 $
 
4$
 $
 $
 ]$
L< < < < < < < <r<   r   c                   4    e Zd ZdZeZdZdZed             Z	dS )TFRegNetPreTrainedModelz
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    regnetrb   c                 b    dt          j        d | j        j        ddft           j                  iS )Nrb      )shapedtype)r6   
TensorSpecrU   rX   float32)r8   s    r;   input_signaturez'TFRegNetPreTrainedModel.input_signature  s0    T4;;SUXZ]4^fhfp q q qrrr<   N)
rL   rM   rN   re   r   r   base_model_prefixmain_input_namepropertyr   r/   r<   r;   r   r     sN         
  L $Os s Xs 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 )TFRegNetModelrU   c                 n     t                      j        |g|R i | t          |d          | _        d S )Nr   r   )r0   r1   r   r   r8   rU   ri   r9   r:   s       r;   r1   zTFRegNetModel.__init__  sB    3&333F333'X>>>r<   vision)
checkpointoutput_typer   modalityexpected_outputNFrb   r   r   rj   rk   c                     ||n| j         j        }||n| j         j        }|                     ||||          }|s|d         f|dd          z   S t	          |j        |j        |j                  S )N)rb   r   r   rj   r   r   r   )rU   r   r   r   r   r   r   r   )r8   rb   r   r   rj   outputss         r;   r@   zTFRegNetModel.call  s    " %9$D  $+Jj 	 &1%<kk$+B]++%!5#	  
 
  	/AJ=7122;..9%7!/!/
 
 
 	
r<   c                     | j         rd S d| _         t          | dd           St          j        | j        j                  5  | j                            d            d d d            d S # 1 swxY w Y   d S d S )NTr   )rD   rE   r6   rF   r   r(   rG   rH   s     r;   rG   zTFRegNetModel.build  s    : 	F
44((4t{/00 ( (!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 54rd   r   r>   )rL   rM   rN   r   r1   r   r	   REGNET_INPUTS_DOCSTRINGr   _CHECKPOINT_FOR_DOCr   _CONFIG_FOR_DOC_EXPECTED_OUTPUT_SHAPEr6   ro   r   rp   r   r   r@   rG   rQ   rR   s   @r;   r   r     s       
?| ? ? ? ? ? ? **+BCC&>$.   04&*
 
i
 'tn
 d^	

 
 
95;KK	L
 
 
  DC ]
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 )TFRegNetForImageClassificationrU   c                 F    t                      j        |g|R i | |j        | _        t          |d          | _        t
          j                                        |j        dk    r&t
          j                            |j        d          nt          j
        g| _        d S )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33F333 +'X>>> L  ""JPJ[^_J_J_ELv0~FFFegep
r<   )r   r   r   r   NFrb   labelsr   r   rj   rk   c                    ||n| j         j        }||n| j         j        }|                     ||||          }|r|j        n|d         } | j        d         |          } | j        d         |          }	|dn|                     ||	          }
|s|	f|dd         z   }|
|
f|z   n|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   )	rU   r   r   r   r   r   hf_compute_lossr   r   )r8   rb   r  r   r   rj   r   r   flattened_outputr  r  outputs               r;   r@   z#TFRegNetForImageClassification.call,  s	   , %9$D  $+Jj 	 &1%<kk$+B]++/CQ\go  
 
 2=L--'!*-4?1-m<<##$455~tt4+?+?vV\+?+]+] 	FY,F)-)9TGf$$vE)tFRYRghhhhr<   c                    | j         rd S d| _         t          | dd           Pt          j        | j        j                  5  | j                            d            d d d            n# 1 swxY w Y   t          | dd           st          j        | j        d         j                  5  | j        d                             d d d | j        j	        d         g           d d d            d S # 1 swxY w Y   d S d S )NTr   r   r   )
rD   rE   r6   rF   r   r(   rG   r   rU   r   rH   s     r;   rG   z$TFRegNetForImageClassification.buildW  s   : 	F
44((4t{/00 ( (!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (4t,,8tq1677 [ ["(($dDK<TUW<X)YZZZ[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 98s$    A''A+.A+'5C))C-0C-)NNNNFr>   )rL   rM   rN   r   r1   r   r	   r   r   _IMAGE_CLASS_CHECKPOINTr   r   _IMAGE_CLASS_EXPECTED_OUTPUTr   r6   ro   rp   r   r   r@   rG   rQ   rR   s   @r;   r   r     sG       
| 
 
 
 
 
 
 **+BCC*.$4	   -1&*/3&*!i !iry)!i #!i 'tn	!i
 d^!i !i 
)5+;;	<!i !i !i  DC ]!iF	[ 	[ 	[ 	[ 	[ 	[ 	[ 	[r<   r   )r   r   r   )5re   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_loggerrL   loggerr   r   r   r
  r  r2   Layerr   rT   rg   rr   r   r   r   r   r   r   REGNET_START_DOCSTRINGr   r   r   __all__r/   r<   r;   <module>r     s      " " " " " " " "     $ $ $ $ $ $ q q q q q q q q q q         
              # " " " " "       . . . . . . 
	H	%	% ! . (  2 1 ,P ,P ,P ,P ,P* ,P ,P ,P^%* %* %* %* %*+ %* %* %*PP P P P Pu|) P P P<"S "S "S "S "Sel( "S "S "SJ+& +& +& +& +&U\' +& +& +&\+& +& +& +& +&U\' +& +& +&\& & & & &EL& & & &@," ," ," ," ,"el( ," ," ,"^ =< =< =< =< =<* =< =< =<@s s s s s/ s s s
 
  U /( /( /( /( /(+ /( /(	 /(d   ?[ ?[ ?[ ?[ ?[%<>Z ?[ ?[ ?[D Y
X
Xr<   