
    sgb\                     B   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mZmZ ddlmZ dd	lmZmZmZmZ d
dlmZ  ej8                  e      ZdZdZ g dZ!dZ"dZ# G d dejH                  jJ                        Z& G d dejH                  jJ                        Z' G d dejH                  jJ                        Z( G d dejH                  jJ                        Z) G d dejH                  jJ                        Z* G d dejH                  jJ                        Z+ G d dejH                  jJ                        Z, G d de      Z-d Z.d!Z/e G d" d#ejH                  jJ                               Z0 ed$e.       G d% d&e-             Z1 ed'e.       G d( d)e-e             Z2y)*zTensorFlow ResNet model.    )OptionalTupleUnionN   )ACT2FN) TFBaseModelOutputWithNoAttention*TFBaseModelOutputWithPoolingAndNoAttention&TFImageClassifierOutputWithNoAttention)TFPreTrainedModelTFSequenceClassificationLosskeraskeras_serializableunpack_inputs)
shape_list)add_code_sample_docstringsadd_start_docstrings%add_start_docstrings_to_model_forwardlogging   )ResNetConfigr   zmicrosoft/resnet-50)r   i      r   z	tiger catc                        e Zd Z	 	 	 ddedededededdf fdZd	ej                  dej                  fd
Zdd	ej                  de	dej                  fdZ
ddZ xZS )TFResNetConvLayerin_channelsout_channelskernel_sizestride
activationreturnNc                 T   t        |   di | |dz  | _        t        j                  j                  |||ddd      | _        t        j                  j                  ddd	      | _        |	t        |   nt        j                  j                  d
      | _        || _        || _        y )N   validFconvolution)r   stridespaddinguse_biasnameh㈵>?normalizationepsilonmomentumr'   linear )super__init__	pad_valuer   layersConv2DconvBatchNormalizationr*   r   
Activationr   r   r   )selfr   r   r   r   r   kwargs	__class__s          `/var/www/html/venv/lib/python3.12/site-packages/transformers/models/resnet/modeling_tf_resnet.pyr1   zTFResNetConvLayer.__init__6   s     	"6"$)LL''k67]biv ( 
	 #\\<<TTW^m<n0:0F&,ELLLcLcdlLm&(    hidden_statec                     | j                   | j                   fx}}t        j                  |d||dg      }| j                  |      }|S )N)r   r   )r2   tfpadr5   )r8   r=   
height_pad	width_pads       r;   r#   zTFResNetConvLayer.convolutionJ   sF    "&..$..!AA
YvvlVZF,STyy.r<   trainingc                 p    | j                  |      }| j                  ||      }| j                  |      }|S NrC   )r#   r*   r   )r8   r=   rC   s      r;   callzTFResNetConvLayer.callQ   s;    ''5)),)J|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)NTr5   r*   )
builtgetattrr?   
name_scoper5   r'   buildr   r*   r   r8   input_shapes     r;   rL   zTFResNetConvLayer.buildW   s    ::
4&2tyy~~. F		tT43C3C DEF4$/;t11667 P""(($dD<M<M)NOP P <F FP P   *C'3*C3'C03C<)r   r   reluFN)__name__
__module____qualname__intstrr1   r?   Tensorr#   boolrG   rL   __classcell__r:   s   @r;   r   r   5   s    
  )) ) 	)
 ) ) 
)(		 bii  d ryy 	Pr<   r   c                   r     e Zd ZdZdeddf fdZd
dej                  dedej                  fdZ	dd	Z
 xZS )TFResNetEmbeddingszO
    ResNet Embeddings (stem) composed of a single aggressive convolution.
    configr   Nc                     t        |   d	i | t        |j                  |j                  dd|j
                  d      | _        t        j                  j                  dddd      | _
        |j                  | _        y )
Nr   r!   embedder)r   r   r   r'   r   r"   pooler)	pool_sizer$   r%   r'   r/   )r0   r1   r   num_channelsembedding_size
hidden_actr`   r   r3   	MaxPool2Dra   r8   r^   r9   r:   s      r;   r1   zTFResNetEmbeddings.__init__h   ss    "6")!!((
 ll,,q!W[c,d"//r<   pixel_valuesrC   c                    t        |      \  }}}}t        j                         r|| j                  k7  rt	        d      |}| j                  |      }t        j                  |ddgddgddgddgg      }| j                  |      }|S )NzeMake sure that the channel dimension of the pixel values match with the one set in the configuration.r   r   )r   r?   executing_eagerlyrc   
ValueErrorr`   r@   ra   )r8   rh   rC   _rc   r=   s         r;   rG   zTFResNetEmbeddings.callu   s     *< 81a!ld6G6G&Gw  $}}\2vvlaVaVaVaV,LM{{<0r<   c                    | j                   ry 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   exY w# 1 sw Y   y xY w)NTr`   ra   )rI   rJ   r?   rK   r`   r'   rL   ra   rM   s     r;   rL   zTFResNetEmbeddings.build   s    ::
4T*6t}}112 *##D)*44(4t{{//0 (!!$'( ( 5* *( (   C%CCC rQ   rR   )rS   rT   rU   __doc__r   r1   r?   rX   rY   rG   rL   rZ   r[   s   @r;   r]   r]   c   sB    0| 0$ 0
 
d 
ryy 
	(r<   r]   c            	       |     e Zd ZdZddedededdf fdZddej                  d	edej                  fd
Z	ddZ
 xZS )TFResNetShortCutz
    ResNet 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   Nc                     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/   )
r0   r1   r   r3   r4   r#   r6   r*   r   r   )r8   r   r   r   r9   r:   s        r;   r1   zTFResNetShortCut.__init__   sl    "6" <<..a%m / 
 #\\<<TTW^m<n&(r<   xrC   c                 R    |}| j                  |      }| j                  ||      }|S rE   )r#   r*   )r8   rs   rC   r=   s       r;   rG   zTFResNetShortCut.call   s2    ''5)),)J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*   )
rI   rJ   r?   rK   r#   r'   rL   r   r*   r   rM   s     r;   rL   zTFResNetShortCut.build   s    ::
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rO   )r!   rQ   rR   )rS   rT   rU   ro   rV   r1   r?   rX   rY   rG   rL   rZ   r[   s   @r;   rq   rq      sR    
)C )s )C )Z^ )bii 4 BII 	Pr<   rq   c                        e Zd ZdZ	 ddededededdf
 fdZdd	ej                  d
e	dej                  fdZ
ddZ xZS )TFResNetBasicLayerzO
    A classic ResNet's residual layer composed by two `3x3` convolutions.
    r   r   r   r   r   Nc                    t        |   d	i | ||k7  xs |dk7  }t        |||d      | _        t        ||d d      | _        |rt        |||d      n t        j                  j                  dd      | _	        t        |   | _        y )
Nr   layer.0r   r'   layer.1r   r'   shortcutr.   r'   r/   )r0   r1   r   conv1conv2rq   r   r3   r7   r}   r   r   )r8   r   r   r   r   r9   should_apply_shortcutr:   s          r;   r1   zTFResNetBasicLayer.__init__   s     	"6" +| ; Jv{&{LV_`
&|\dYbc
 % [,vJW((
(C 	
 !,r<   r=   rC   c                     |}| j                  ||      }| j                  ||      }| j                  ||      }||z  }| j                  |      }|S rE   )r   r   r}   r   r8   r=   rC   residuals       r;   rG   zTFResNetBasicLayer.call   s[    zz,zBzz,zB==H== |4r<   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)NTr   r   r}   )	rI   rJ   r?   rK   r   r'   rL   r   r}   rM   s     r;   rL   zTFResNetBasicLayer.build   s    ::
4$'3tzz/ '

  &'4$'3tzz/ '

  &'4T*6t}}112 *##D)* * 7' '' '* *s$   D%%D1?D=%D.1D:=E)r   rP   rQ   rR   rS   rT   rU   ro   rV   rW   r1   r?   rX   rY   rG   rL   rZ   r[   s   @r;   rw   rw      sc    
 W]--.1-;>-PS-	- d ryy *r<   rw   c                        e Zd ZdZ	 	 	 ddedededededdf fd	Zdd
ej                  de	dej                  fdZ
ddZ xZS )TFResNetBottleNeckLayera%  
    A classic ResNet's bottleneck layer composed by three `3x3` convolutions.

    The first `1x1` convolution reduces the input by a factor of `reduction` in order to make the second `3x3`
    convolution faster. The last `1x1` convolution remaps the reduced features to `out_channels`.
    r   r   r   r   	reductionr   Nc                 J   t        	|   di | ||k7  xs |dk7  }||z  }t        ||dd      | _        t        |||d      | _        t        ||dd d      | _        |rt        |||d      n t        j                  j                  d	d
      | _
        t        |   | _        y )Nr   ry   )r   r'   r{   rz   zlayer.2)r   r   r'   r}   r.   r~   r/   )r0   r1   r   conv0r   r   rq   r   r3   r7   r}   r   r   )
r8   r   r   r   r   r   r9   r   reduces_channelsr:   s
            r;   r1   z TFResNetBottleNeckLayer.__init__   s     	"6" +| ; Jv{'94&{4DRSZcd
&'79IRX_hi
&'7STaeluv
 % [,vJW((
(C 	
 !,r<   r=   rC   c                     |}| j                  ||      }| j                  ||      }| j                  ||      }| j                  ||      }||z  }| j	                  |      }|S rE   )r   r   r   r}   r   r   s       r;   rG   zTFResNetBottleNeckLayer.call   sm    zz,zBzz,zBzz,zB==H== |4r<   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       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   xY w# 1 sw Y   ~xY w# 1 sw Y   y xY w)NTr   r   r   r}   )
rI   rJ   r?   rK   r   r'   rL   r   r   r}   rM   s     r;   rL   zTFResNetBottleNeckLayer.build  sG   ::
4$'3tzz/ '

  &'4$'3tzz/ '

  &'4$'3tzz/ '

  &'4T*6t}}112 *##D)* * 7' '' '' '* *s0   E?%F?FF$?F	FF!$F-)r   rP      rQ   rR   r   r[   s   @r;   r   r      sy      -- - 	-
 - - 
-, d ryy *r<   r   c                        e Zd ZdZ	 ddedededededdf fd	Zdd
ej                  de	dej                  fdZ
ddZ xZS )TFResNetStagez4
    A ResNet stage composed of stacked layers.
    r^   r   r   r   depthr   Nc                    t        
|   di | |j                  dk(  rt        nt        } |||||j
                  d      g}|t        |dz
        D 	cg c]  }	 ||||j
                  d|	dz            c}	z  }|| _        y c c}	w )N
bottleneckzlayers.0)r   r   r'   r   zlayers.r|   r/   )r0   r1   
layer_typer   rw   re   rangestage_layers)r8   r^   r   r   r   r   r9   layerr3   ir:   s             r;   r1   zTFResNetStage.__init__  s     	"6"+1+<+<+L'Rd\&VM^M^eopq519%
 ,9J9JSZ[\_`[`ZaQbc
 	
 #	
s   #Br=   rC   c                 <    | j                   D ]  } |||      } |S rE   )r   )r8   r=   rC   r   s       r;   rG   zTFResNetStage.call'  s+    && 	BE AL	B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)NTr   )rI   rJ   r   r?   rK   r'   rL   r8   rN   r   s      r;   rL   zTFResNetStage.build,  sr    ::
4.:** &]]5::. &KK%& && ;& &   A..A7	)r!   r!   rQ   rR   )rS   rT   rU   ro   r   rV   r1   r?   rX   rY   rG   rL   rZ   r[   s   @r;   r   r     sk    
 hi#"#14#DG#QT#ad#	# d ryy 
&r<   r   c                   h     e Zd Zdeddf fdZ	 	 	 ddej                  dedededef
d	Z	dd
Z
 xZS )TFResNetEncoderr^   r   Nc                    t        |   di | t        ||j                  |j                  d   |j
                  rdnd|j                  d   d      g| _        t        t        |j                  |j                  dd  |j                  dd              D ]8  \  }\  }}}| j                  j                  t        ||||d|dz                 : y )	Nr   r!   r   zstages.0)r   r   r'   zstages.)r   r'   r/   )r0   r1   r   rd   hidden_sizesdownsample_in_first_stagedepthsstages	enumeratezipappend)r8   r^   r9   r   r   r   r   r:   s          r;   r1   zTFResNetEncoder.__init__7  s    "6" %%##A&"<<q!mmA&	
 6?##V%8%8%<fmmAB>OP6
 	v1A1\5 KK}V[,V[dklmpqlqkrbstu	vr<   r=   output_hidden_statesreturn_dictrC   c                     |rdnd }| j                   D ]  }|r||fz   } |||      } |r||fz   }|st        d ||fD              S t        ||      S )Nr/   rF   c              3   &   K   | ]	  }||  y wrR   r/   ).0vs     r;   	<genexpr>z'TFResNetEncoder.call.<locals>.<genexpr>\  s     SqQ]Ss   )last_hidden_statehidden_states)r   tupler   )r8   r=   r   r   rC   r   stage_modules          r;   rG   zTFResNetEncoder.callI  su     3 KK 	IL# - ?'xHL		I  )\O;MS\=$ASSS/,^kllr<   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)NTr   )rI   rJ   r   r?   rK   r'   rL   r   s      r;   rL   zTFResNetEncoder.build`  sp    ::
44(4 &]]5::. &KK%& && 5& &r   )FTFrR   )rS   rT   rU   r   r1   r?   rX   rY   r   rG   rL   rZ   r[   s   @r;   r   r   6  sh    v| v$ v* &+ miim #m 	m
 m 
*m.&r<   r   c                   ,    e Zd ZdZeZdZdZed        Z	y)TFResNetPreTrainedModelz
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    resnetrh   c                     dt        j                  d | j                  j                  ddft         j                        iS )Nrh      )shapedtype)r?   
TensorSpecr^   rc   float32)r8   s    r;   input_signaturez'TFResNetPreTrainedModel.input_signaturet  s4    T4;;;S;SUXZ]4^fhfpfp qrrr<   N)
rS   rT   rU   ro   r   config_classbase_model_prefixmain_input_namepropertyr   r/   r<   r;   r   r   j  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 ([`ResNetConfig`]): 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
            [`ConvNextImageProcessor.__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.
c                        e Zd ZeZdeddf fdZe	 	 	 ddej                  de	e
   de	e
   de
deeej                     ef   f
d	       Zdd
Z xZS )TFResNetMainLayerr^   r   Nc                     t        |   di | || _        t        |d      | _        t        |d      | _        t        j                  j                  d      | _
        y )Nr`   r~   encoderT)keepdimsr/   )r0   r1   r^   r]   r`   r   r   r   r3   GlobalAveragePooling2Dra   rg   s      r;   r1   zTFResNetMainLayer.__init__  sO    "6"*6
C&vI>ll9949Hr<   rh   r   r   rC   c                    ||n| j                   j                  }||n| j                   j                  }t        j                  |g d      }| j                  ||      }| j                  ||||      }|d   }| j                  |      }t        j                  |d      }t        j                  |d      }d}	|dd  D ]  }
|	t        d	 |
D              z   }	 |s||f|	z   S |r|	nd }	t        |||	
      S )N)r   r!   r   r   )permrF   r   r   rC   r   r   r   r   r!   r/   r   c              3   H   K   | ]  }t        j                  |d         yw)r   N)r?   	transpose)r   hs     r;   r   z)TFResNetMainLayer.call.<locals>.<genexpr>  s     1fTU",,q,2O1fs    ")r   pooler_outputr   )
r^   r   use_return_dictr?   r   r`   r   ra   r   r	   )r8   rh   r   r   rC   embedding_outputencoder_outputsr   pooled_outputr   r=   s              r;   rG   zTFResNetMainLayer.call  s!    %9$D $++JjJj 	 &1%<k$++B]B]
 ||L|D===I,,3GU`ks ' 
 ,A.$56 LL):LI]LA+AB/ 	gL)E1fYe1f,ffM	g %}5EE)=49/''
 	
r<   c                    | j                   ry 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   exY w# 1 sw Y   y xY w)NTr`   r   )rI   rJ   r?   rK   r`   r'   rL   r   rM   s     r;   rL   zTFResNetMainLayer.build  s    ::
4T*6t}}112 *##D)*4D)5t||001 )""4() ) 6* *) )rn   NNFrR   )rS   rT   rU   r   r   r1   r   r?   rX   r   rY   r   r   r	   rG   rL   rZ   r[   s   @r;   r   r     s    LI| I$ I  04&*+
ii+
 'tn+
 d^	+

 +
 
uRYY!KK	L+
 +
Z	)r<   r   zOThe bare ResNet model outputting raw features without any specific head on top.c                        e Zd Zdeddf fdZ ee       eee	e
de      e	 	 	 ddej                  dee   d	ee   d
edeeej                     e	f   f
d                     ZddZ xZS )TFResNetModelr^   r   Nc                 J    t        |   |fi | t        |d      | _        y )Nr   )r^   r'   )r0   r1   r   r   rg   s      r;   r1   zTFResNetModel.__init__  s#    *6*'vHEr<   vision)
checkpointoutput_typer   modalityexpected_outputrh   r   r   rC   c                     ||n| j                   j                  }||n| j                   j                  }| j                  ||||      }|S )N)rh   r   r   rC   )r^   r   r   r   )r8   rh   r   r   rC   resnet_outputss         r;   rG   zTFResNetModel.call  s]    " %9$D $++JjJj 	 &1%<k$++B]B]%!5#	 % 
 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   )rI   rJ   r?   rK   r   r'   rL   rM   s     r;   rL   zTFResNetModel.build  si    ::
44(4t{{//0 (!!$'( ( 5( (s   A11A:r   rR   )rS   rT   rU   r   r1   r   RESNET_INPUTS_DOCSTRINGr   _CHECKPOINT_FOR_DOCr	   _CONFIG_FOR_DOC_EXPECTED_OUTPUT_SHAPEr   r?   rX   r   rY   r   r   rG   rL   rZ   r[   s   @r;   r   r     s    
F| F$ F ++BC&>$.  04&*ii 'tn d^	
  
uRYY!KK	L  D((r<   r   z
    ResNet 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ddf fdZdej                  dej                  fdZ ee	       e
eeee      e	 	 	 	 	 ddej                  d	ej                  d
edededeeej                     ef   fd                     ZddZ xZS )TFResNetForImageClassificationr^   r   Nc                 :   t        |   |fi | |j                  | _        t        |d      | _        |j                  dkD  r+t
        j                  j                  |j                  d      n t
        j                  j                  dd      | _	        || _
        y )Nr   r~   r   zclassifier.1r.   )r0   r1   
num_labelsr   r   r   r3   Denser7   classifier_layerr^   rg   s      r;   r1   z'TFResNetForImageClassification.__init__  s    *6* ++'X>   1$ LLv00~F(((G 	
 r<   rs   c                 n    t        j                  j                         |      }| j                  |      }|S rR   )r   r3   Flattenr   )r8   rs   logitss      r;   
classifierz)TFResNetForImageClassification.classifier  s.    LL  "1%&&q)r<   )r   r   r   r   rh   labelsr   r   rC   c                 .   ||n| j                   j                  }| j                  ||||      }|r|j                  n|d   }| j	                  |      }|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!   )lossr   r   )r^   r   r   r   r   hf_compute_lossr
   r   )r8   rh   r   r   r   rC   outputsr   r   r   outputs              r;   rG   z#TFResNetForImageClassification.call!  s    * &1%<k$++B]B]++/CQ\go  
 2=--'!*/~t4+?+?+OY,F'+'7D7V#CVC54^e^s^sttr<   c                    | j                   ry d| _         t        | dd       Mt        j                  | j                  j
                        5  | j                  j                  d        d d d        t        | dd       ht        j                  | j                  j
                        5  | j                  j                  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   )
rI   rJ   r?   rK   r   r'   rL   r   r^   r   rM   s     r;   rL   z$TFResNetForImageClassification.buildH  s    ::
44(4t{{//0 (!!$'(4+T2>t4499: X%%++T49Q9QRT9U,VWX X ?( (X Xs   C%%6C1%C.1C:)NNNNFrR   )rS   rT   rU   r   r1   r?   rX   r   r   r   r   _IMAGE_CLASS_CHECKPOINTr
   r   _IMAGE_CLASS_EXPECTED_OUTPUTr   rY   r   r   rG   rL   rZ   r[   s   @r;   r   r     s    
| 
$ 
BII ")) 
 ++BC*:$4	  #' %) uiiu 		u #	u
 u u 
uRYY!GG	Hu  Du>	Xr<   r   )3ro   typingr   r   r   
tensorflowr?   activations_tfr   modeling_tf_outputsr   r	   r
   modeling_tf_utilsr   r   r   r   r   tf_utilsr   utilsr   r   r   r   configuration_resnetr   
get_loggerrS   loggerr   r   r   r   r   r3   Layerr   r]   rq   rw   r   r   r   r   RESNET_START_DOCSTRINGr   r   r   r   r/   r<   r;   <module>r     s    ) )  $ 
  # u u . 
		H	% ! , (  0 * +P** +P\'(++ '(TPu||)) PD(*++ (*V7*ell00 7*t&ELL&& &D1&ell(( 1&hs/ s
   A)** A) A)H U((+ ((	((V  BX%<>Z BXBXr<   