
    rh\                     F   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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j6                  e      ZdZdZg dZ dZ!dZ" G d dejF                  jH                        Z% G d dejF                  jH                        Z& G d dejF                  jH                        Z' G d dejF                  jH                        Z( G d dejF                  jH                        Z) G d dejF                  jH                        Z* G d dejF                  jH                        Z+ G d de      Z,d Z-d!Z.e G d" d#ejF                  jH                               Z/ ed$e-       G d% d&e,             Z0 ed'e-       G d( d)e,e             Z1g d*Z2y)+zTensorFlow ResNet model.    )Optional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/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/transformers/models/resnet/modeling_tf_resnet.pyr0   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   )r1   tfpadr4   )r7   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rB   )r"   r)   r   )r7   r<   rB   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)NTr4   r)   )
builtgetattrr>   
name_scoper4   r&   buildr   r)   r   r7   input_shapes     r:   rK   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strr0   r>   Tensorr"   boolrF   rK   __classcell__r9   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.   )r/   r0   r   num_channelsembedding_size
hidden_actr_   r   r2   	MaxPool2Dr`   r7   r]   r8   r9   s      r:   r0   zTFResNetEmbeddings.__init__h   ss    "6")!!((
 ll,,q!W[c,d"//r;   pixel_valuesrB   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_eagerlyrb   
ValueErrorr_   r?   r`   )r7   rg   rB   _rb   r<   s         r:   rF   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_   r`   )rH   rI   r>   rJ   r_   r&   rK   r`   rL   s     r:   rK   zTFResNetEmbeddings.build   s    ::
4T*6t}}112 *##D)*44(4t{{//0 (!!$'( ( 5* *( (   C%CCC rP   rQ   )rR   rS   rT   __doc__r   r0   r>   rW   rX   rF   rK   rY   rZ   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.   )
r/   r0   r   r2   r3   r"   r5   r)   r   r   )r7   r   r   r   r8   r9   s        r:   r0   zTFResNetShortCut.__init__   sl    "6" <<..a%m / 
 #\\<<TTW^m<n&(r;   xrB   c                 R    |}| j                  |      }| j                  ||      }|S rD   )r"   r)   )r7   rr   rB   r<   s       r:   rF   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)   )
rH   rI   r>   rJ   r"   r&   rK   r   r)   r   rL   s     r:   rK   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rN   )r    rP   rQ   )rR   rS   rT   rn   rU   r0   r>   rW   rX   rF   rK   rY   rZ   s   @r:   rp   rp      sR    
)C )s )C )Z^ )bii 4 BII 	Pr;   rp   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.   )r/   r0   r   conv1conv2rp   r   r2   r6   r|   r   r   )r7   r   r   r   r   r8   should_apply_shortcutr9   s          r:   r0   zTFResNetBasicLayer.__init__   s     	"6" +| ; Jv{&{LV_`
&|\dYbc
 % [,vJW((
(C 	
 !,r;   r<   rB   c                     |}| j                  ||      }| j                  ||      }| j                  ||      }||z  }| j                  |      }|S rD   )r~   r   r|   r   r7   r<   rB   residuals       r:   rF   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|   )	rH   rI   r>   rJ   r~   r&   rK   r   r|   rL   s     r:   rK   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   rO   rP   rQ   rR   rS   rT   rn   rU   rV   r0   r>   rW   rX   rF   rK   rY   rZ   s   @r:   rv   rv      sc    
 W]--.1-;>-PS-	- d ryy *r;   rv   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   rx   )r   r&   rz   ry   zlayer.2)r   r   r&   r|   r-   r}   r.   )r/   r0   r   conv0r~   r   rp   r   r2   r6   r|   r   r   )
r7   r   r   r   r   r   r8   r   reduces_channelsr9   s
            r:   r0   z TFResNetBottleNeckLayer.__init__   s     	"6" +| ; Jv{'94&{4DRSZcd
&'79IRX_hi
&'7STaeluv
 % [,vJW((
(C 	
 !,r;   r<   rB   c                     |}| j                  ||      }| j                  ||      }| j                  ||      }| j                  ||      }||z  }| j	                  |      }|S rD   )r   r~   r   r|   r   r   s       r:   rF   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|   )
rH   rI   r>   rJ   r   r&   rK   r~   r   r|   rL   s     r:   rK   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   rO      rP   rQ   r   rZ   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.   )r/   r0   
layer_typer   rv   rd   rangestage_layers)r7   r]   r   r   r   r   r8   layerr2   ir9   s             r:   r0   zTFResNetStage.__init__  s     	"6"+1+<+<+L'Rd\&VM^M^eopq519%
 ,9J9JSZ[\_`[`ZaQbc
 	
 #	
s   #Br<   rB   c                 <    | j                   D ]  } |||      } |S rD   )r   )r7   r<   rB   r   s       r:   rF   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   )rH   rI   r   r>   rJ   r&   rK   r7   rM   r   s      r:   rK   zTFResNetStage.build,  sr    ::
4.:** &]]5::. &KK%& && ;& &   A..A7	)r    r    rP   rQ   )rR   rS   rT   rn   r   rU   r0   r>   rW   rX   rF   rK   rY   rZ   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.   )r/   r0   r   rc   hidden_sizesdownsample_in_first_stagedepthsstages	enumeratezipappend)r7   r]   r8   r   r   r   r   r9   s          r:   r0   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_dictrB   c                     |rdnd }| j                   D ]  }|r||fz   } |||      } |r||fz   }|st        d ||fD              S t        ||      S )Nr.   rE   c              3   &   K   | ]	  }||  y wrQ   r.   ).0vs     r:   	<genexpr>z'TFResNetEncoder.call.<locals>.<genexpr>\  s     SqQ]Ss   )last_hidden_statehidden_states)r   tupler   )r7   r<   r   r   rB   r   stage_modules          r:   rF   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   )rH   rI   r   r>   rJ   r&   rK   r   s      r:   rK   zTFResNetEncoder.build`  sp    ::
44(4 &]]5::. &KK%& && 5& &r   )FTFrQ   )rR   rS   rT   r   r0   r>   rW   rX   r   rF   rK   rY   rZ   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.
    resnetrg   c                     dt        j                  d | j                  j                  ddft         j                        iS )Nrg      )shapedtype)r>   
TensorSpecr]   rb   float32)r7   s    r:   input_signaturez'TFResNetPreTrainedModel.input_signaturet  s4    T4;;;S;SUXZ]4^fhfpfp qrrr;   N)
rR   rS   rT   rn   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.   )r/   r0   r]   r\   r_   r   r   r   r2   GlobalAveragePooling2Dr`   rf   s      r:   r0   zTFResNetMainLayer.__init__  sO    "6"*6
C&vI>ll9949Hr;   rg   r   r   rB   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   )permrE   r   r   rB   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   r`   r   r   )r7   rg   r   r   rB   embedding_outputencoder_outputsr   pooled_outputr   r<   s              r:   rF   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   )rH   rI   r>   rJ   r_   r&   rK   r   rL   s     r:   rK   zTFResNetMainLayer.build  s    ::
4T*6t}}112 *##D)*4D)5t||001 )""4() ) 6* *) )rm   NNFrQ   )rR   rS   rT   r   r   r0   r   r>   rW   r   rX   r   r   r   rF   rK   rY   rZ   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&   )r/   r0   r   r   rf   s      r:   r0   zTFResNetModel.__init__  s#    *6*'vHEr;   vision)
checkpointoutput_typer   modalityexpected_outputrg   r   r   rB   c                     ||n| j                   j                  }||n| j                   j                  }| j                  ||||      }|S )N)rg   r   r   rB   )r]   r   r   r   )r7   rg   r   r   rB   resnet_outputss         r:   rF   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   )rH   rI   r>   rJ   r   r&   rK   rL   s     r:   rK   zTFResNetModel.build  si    ::
44(4t{{//0 (!!$'( ( 5( (s   A11A:r   rQ   )rR   rS   rT   r   r0   r   RESNET_INPUTS_DOCSTRINGr   _CHECKPOINT_FOR_DOCr   _CONFIG_FOR_DOC_EXPECTED_OUTPUT_SHAPEr   r>   rW   r   rX   r   r   rF   rK   rY   rZ   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                   6    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ej                     d	e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 )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-   )r/   r0   
num_labelsr   r   r   r2   Denser6   classifier_layerr]   rf   s      r:   r0   z'TFResNetForImageClassification.__init__  s    *6* ++'X>   1$ LLv00~F(((G 	
 r;   rr   c                 n    t        j                  j                         |      }| j                  |      }|S rQ   )r   r2   Flattenr   )r7   rr   logitss      r:   
classifierz)TFResNetForImageClassification.classifier  s.    LL  "1%&&q)r;   )r   r   r   r   rg   labelsr   r   rB   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   )r7   rg   r   r   r   rB   outputsr   r   r   outputs              r:   rF   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   )
rH   rI   r>   rJ   r   r&   rK   r   r]   r   rL   s     r:   rK   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:)NNNNFrQ   )rR   rS   rT   r   r0   r>   rW   r   r   r   r   _IMAGE_CLASS_CHECKPOINTr	   r   _IMAGE_CLASS_EXPECTED_OUTPUTr   r   rX   r   r   rF   rK   rY   rZ   s   @r:   r   r     s    
| 
$ 
BII ")) 
 ++BC*:$4	  -1&*/3&*uryy)u #u 'tn	u
 d^u u 
uRYY!GG	Hu  Du>	Xr;   r   )r   r   r   )3rn   typingr   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_loggerrR   loggerr   r   r   r   r   r2   Layerr   r\   rp   rv   r   r   r   r   RESNET_START_DOCSTRINGr   r   r   r   __all__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J Yr;   