
    sg^                        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             Z4y)-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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	           `/var/www/html/venv/lib/python3.12/site-packages/transformers/models/regnet/modeling_tf_regnet.pyr1   zTFRegNetConvLayer.__init__7   s     	"6" ||11+:J1K <<.. # / 
 #\\<<TTW^m<n0:0F&,BKK&(    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  &&dD$:J:J'KLM4$/;t11667 P""(($dD<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_    
 $*)) ) 	)
 ) ) SM)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!ld6G6G&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 / 
 #\\<<TTW^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"26":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299 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"ll994h9WLL(8aTZanoLL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=    \* NN 	*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!''tT4;K;K(LMNt~~a0556 Sq!''tT4;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&    1C 13 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" +| ; Jv{Q(;(;;< % [,vJW((
(C 	 k<QSYSdSdktul6&U[UfUfmv lLaTX_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     KK 	6L'5L	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::. &KK%& && 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# 4S 4Z] 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" +| ; Jv{Q(;(;;< % [,vJW((
(C 	 k<QSYSdSdktul6&U[UfUfmv L3u[ST_?U;V]fglLaTX_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"3s": &+|FT
 X]]bef]fWghRSeFL,wqse_Mh
 is   	A,c                 8    | j                   D ]
  } ||      } |S r>   )r2   )r8   r?   r~   s      r;   r@   zTFRegNetStage.call=  s%     KK 	6L'5L	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::. &KK%& && 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!mmA&		
 f1163F3Fqr3JK7@_V\VcVcdedfVgAh7i 	t3A3+lUKK}V[,V[dklmnolokpbqrs	t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     SqQ]Ss   )last_hidden_statehidden_states)r   tupler   )r8   r?   r   r   r   stage_modules         r;   r@   zTFRegNetEncoder.call_  sq     3 KK 	6L# - ?'5L		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uzz* "D!" "	"" "s   A  A)	)FTr>   )rM   rN   rO   r   r1   r6   rp   rq   r   r@   rG   rR   rS   s   @r;   r   r   L  sK    t| t& `dmII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&vI>ll994h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 $++JjJj 	 &1%<k$++B]B]===I,,3GU`ks ' 
 ,A.$56 ]FLL):N  !_`Oa"b!2<<#E"bcM%}58KKK9/'+?-
 	
 FUEbEb
 	
 #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&*$
ii$
 'tn$
 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    T4;;;S;SUXZ]4^fhfpfp 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&3F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 $++JjJj 	 &1%<k$++B]B]++%!5#	  
 AJ=712;..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&*
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                        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&3F3 ++'X> LL  "JPJ[J[^_J_ELLv00~F
egepep
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 $++JjJj 	 &1%<k$++B]B]++/CQ\go  
 2=--'!*-4??1-m<##$45~t4+?+?vV\+?+]Y,F)-)9TGf$EvE)tFRYRgRg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 ["(($dDKK<T<TUW<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ryy)!i #!i 'tn	!i
 d^!i !i 
)5+;;	<!i D !iF	[r<   r   )5rf   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   r/   r<   r;   <module>r     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 ?[?[r<   