
    hhP5                        d Z ddlmc mZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ d
ZdZ e       Z edd      	 	 	 	 	 	 	 dd       Z ed      dd       Z ed      dd       Zej0                  j3                  dej4                  ej6                        e_         ej.                  j                   e_         y)a  Xception V1 model for TF-Keras.

On ImageNet, this model gets to a top-1 validation accuracy of 0.790
and a top-5 validation accuracy of 0.945.

Reference:
  - [Xception: Deep Learning with Depthwise Separable Convolutions](
      https://arxiv.org/abs/1610.02357) (CVPR 2017)
    N)backend)imagenet_utils)training)VersionAwareLayers)
data_utils)layer_utils)keras_exportzthttps://storage.googleapis.com/tensorflow/keras-applications/xception/xception_weights_tf_dim_ordering_tf_kernels.h5zzhttps://storage.googleapis.com/tensorflow/keras-applications/xception/xception_weights_tf_dim_ordering_tf_kernels_notop.h5z$keras.applications.xception.Xceptionzkeras.applications.Xceptionc           
      2   |dv s4t         j                  j                  j                  |      st	        d      |dk(  r| r|dk7  rt	        d      t        j                  |ddt        j                         | |      }|t        j                  |	      }n/t        j                  |      st        j                  ||
      }n|}t        j                         dk(  rdnd}t        j                  ddddd      |      }	t        j                  |d      |	      }	t        j                  dd      |	      }	t        j                  dddd      |	      }	t        j                  |d      |	      }	t        j                  dd      |	      }	t        j                  dddd d!      |	      }
t        j                  |"      |
      }
t        j                  ddd dd#$      |	      }	t        j                  |d%      |	      }	t        j                  dd&      |	      }	t        j                  ddd dd'$      |	      }	t        j                  |d(      |	      }	t        j!                  ddd d)*      |	      }	t        j#                  |	|
g      }	t        j                  d+ddd d!      |	      }
t        j                  |"      |
      }
t        j                  dd,      |	      }	t        j                  d+dd dd-$      |	      }	t        j                  |d.      |	      }	t        j                  dd/      |	      }	t        j                  d+dd dd0$      |	      }	t        j                  |d1      |	      }	t        j!                  ddd d2*      |	      }	t        j#                  |	|
g      }	t        j                  d3ddd d!      |	      }
t        j                  |"      |
      }
t        j                  dd4      |	      }	t        j                  d3dd dd5$      |	      }	t        j                  |d6      |	      }	t        j                  dd7      |	      }	t        j                  d3dd dd8$      |	      }	t        j                  |d9      |	      }	t        j!                  ddd d:*      |	      }	t        j#                  |	|
g      }	t%        d;      D ]M  }|	}
d<t'        |d=z         z   }t        j                  d|d>z         |	      }	t        j                  d3dd d|d?z   $      |	      }	t        j                  ||d@z         |	      }	t        j                  d|dAz         |	      }	t        j                  d3dd d|dBz   $      |	      }	t        j                  ||dCz         |	      }	t        j                  d|dDz         |	      }	t        j                  d3dd d|dEz   $      |	      }	t        j                  ||dFz         |	      }	t        j#                  |	|
g      }	P t        j                  dGddd d!      |	      }
t        j                  |"      |
      }
t        j                  ddH      |	      }	t        j                  d3dd ddI$      |	      }	t        j                  |dJ      |	      }	t        j                  ddK      |	      }	t        j                  dGdd ddL$      |	      }	t        j                  |dM      |	      }	t        j!                  ddd dN*      |	      }	t        j#                  |	|
g      }	t        j                  dOdd ddP$      |	      }	t        j                  |dQ      |	      }	t        j                  ddR      |	      }	t        j                  dSdd ddT$      |	      }	t        j                  |dU      |	      }	t        j                  ddV      |	      }	| rOt        j)                  dW      |	      }	t        j*                  ||       t        j-                  ||dXY      |	      }	n=|dZk(  rt        j)                         |	      }	n|d[k(  rt        j/                         |	      }	|t1        j2                  |      }n|}t5        j6                  ||	d\      }|dk(  rP| rt9        j:                  d]t<        d^d_`      }nt9        j:                  dat>        d^db`      }|jA                  |       |S ||jA                  |       |S )ca_
  Instantiates the Xception architecture.

    Reference:
    - [Xception: Deep Learning with Depthwise Separable Convolutions](
        https://arxiv.org/abs/1610.02357) (CVPR 2017)

    For image classification use cases, see
    [this page for detailed examples](
      https://keras.io/api/applications/#usage-examples-for-image-classification-models).

    For transfer learning use cases, make sure to read the
    [guide to transfer learning & fine-tuning](
      https://keras.io/guides/transfer_learning/).

    The default input image size for this model is 299x299.

    Note: each TF-Keras Application expects a specific kind of input
    preprocessing. For Xception, call
    `tf.keras.applications.xception.preprocess_input` on your inputs before
    passing them to the model. `xception.preprocess_input` will scale input
    pixels between -1 and 1.

    Args:
      include_top: whether to include the fully-connected
        layer at the top of the network.
      weights: one of `None` (random initialization),
        'imagenet' (pre-training on ImageNet),
        or the path to the weights file to be loaded.
      input_tensor: optional TF-Keras tensor
        (i.e. output of `layers.Input()`)
        to use as image input for the model.
      input_shape: optional shape tuple, only to be specified
        if `include_top` is False (otherwise the input shape
        has to be `(299, 299, 3)`.
        It should have exactly 3 inputs channels,
        and width and height should be no smaller than 71.
        E.g. `(150, 150, 3)` would be one valid value.
      pooling: Optional pooling mode for feature extraction
        when `include_top` is `False`.
        - `None` means that the output of the model will be
            the 4D tensor output of the
            last convolutional block.
        - `avg` means that global average pooling
            will be applied to the output of the
            last convolutional block, and thus
            the output of the model will be a 2D tensor.
        - `max` means that global max pooling will
            be applied.
      classes: optional number of classes to classify images
        into, only to be specified if `include_top` is True,
        and if no `weights` argument is specified.
      classifier_activation: A `str` or callable. The activation function to use
        on the "top" layer. Ignored unless `include_top=True`. Set
        `classifier_activation=None` to return the logits of the "top" layer.
        When loading pretrained weights, `classifier_activation` can only
        be `None` or `"softmax"`.

    Returns:
      A `keras.Model` instance.
    >   NimagenetzThe `weights` argument should be either `None` (random initialization), `imagenet` (pre-training on ImageNet), or the path to the weights file to be loaded.r     zWIf using `weights` as `"imagenet"` with `include_top` as true, `classes` should be 1000i+  G   )default_sizemin_sizedata_formatrequire_flattenweights)shape)tensorr   channels_first       )   r   )   r   Fblock1_conv1)stridesuse_biasnameblock1_conv1_bn)axisr   relublock1_conv1_act)r   @   block1_conv2)r   r   block1_conv2_bnblock1_conv2_act   )r   r   same)r   paddingr   )r    block2_sepconv1)r)   r   r   block2_sepconv1_bnblock2_sepconv2_actblock2_sepconv2block2_sepconv2_bnblock2_pool)r   r)   r      block3_sepconv1_actblock3_sepconv1block3_sepconv1_bnblock3_sepconv2_actblock3_sepconv2block3_sepconv2_bnblock3_pooli  block4_sepconv1_actblock4_sepconv1block4_sepconv1_bnblock4_sepconv2_actblock4_sepconv2block4_sepconv2_bnblock4_pool   block   _sepconv1_act	_sepconv1_sepconv1_bn_sepconv2_act	_sepconv2_sepconv2_bn_sepconv3_act	_sepconv3_sepconv3_bni   block13_sepconv1_actblock13_sepconv1block13_sepconv1_bnblock13_sepconv2_actblock13_sepconv2block13_sepconv2_bnblock13_pooli   block14_sepconv1block14_sepconv1_bnblock14_sepconv1_acti   block14_sepconv2block14_sepconv2_bnblock14_sepconv2_actavg_poolpredictions)
activationr   avgmaxxceptionz.xception_weights_tf_dim_ordering_tf_kernels.h5models 0a58e3b7378bc2990ea3b43d5981f1f6)cache_subdir	file_hashz4xception_weights_tf_dim_ordering_tf_kernels_notop.h5 b0042744bf5b25fce3cb969f33bebb97)!tfiogfileexists
ValueErrorr   obtain_input_shaper   image_data_formatlayersInputis_keras_tensorConv2DBatchNormalization
ActivationSeparableConv2DMaxPooling2DaddrangestrGlobalAveragePooling2Dvalidate_activationDenseGlobalMaxPooling2Dr   get_source_inputsr   Modelr   get_fileTF_WEIGHTS_PATHTF_WEIGHTS_PATH_NO_TOPload_weights)include_topr   input_tensorinput_shapepoolingclassesclassifier_activation	img_inputchannel_axisxresidualiprefixinputsmodelweights_paths                   `/var/www/html/dev/engine/venv/lib/python3.12/site-packages/tf_keras/src/applications/xception.pyXceptionr   2   sM
   P ))RUU[[-?-?-H<
 	
 *D1
 	
 !33--/#K LL{L3	&&|4LLI$I1137GG1RL
FFU 	 		A 	!!|:K!LQOA&'9:1=Ab&5~FqIA!!|:K!LQOA&'9:1=A}}VVVe  	H ((l(;HEHVVe:K 	 			A 	!!|:N!O		A 	&'<=a@AVVe:K 	 			A 	!!|:N!O		A 	] 	 			A 	

Ax=!A}}VVVe  	H ((l(;HEH&'<=a@AVVe:K 	 			A 	!!|:N!O		A 	&'<=a@AVVe:K 	 			A 	!!|:N!O		A 	] 	 			A 	

Ax=!A}}VVVe  	H ((l(;HEH&'<=a@AVVe:K 	 			A 	!!|:N!O		A 	&'<=a@AVVe:K 	 			A 	!!|:N!O		A 	] 	 			A 	

Ax=!A1X &&3q1u:%f6O+CDQG""+% # 
  %%F^$; & 

 f6O+CDQG""+% # 
  %%F^$; & 

 f6O+CDQG""+% # 
  %%F^$; & 

 JJ8}%M&&P }}fffu  	H ((l(;HEH&'=>qAAVVe:L 	 			A 	!! 5 	" 			A 	&'=>qAAffu;M 	 			A 	!! 5 	" 			A 	^ 	 			A 	

Ax=!Affu;M 	 			A 	!! 5 	" 			A 	&'=>qAAffu;M 	 			A 	!! 5 	" 			A 	&'=>qAA))z):1=**+@'JLL 5M  

 e--/2A))+A.A ..|<NN61:6E *%..@%<	L &..F&%<	L 	<( L 
	7#L    z,keras.applications.xception.preprocess_inputc                 2    t        j                  | |d      S )Nrc   )r   mode)r   preprocess_input)r   r   s     r   r   r   l  s    **	{ r   z.keras.applications.xception.decode_predictionsc                 0    t        j                  | |      S )N)top)r   decode_predictions)predsr   s     r   r   r   s  s    ,,U<<r    )r   reterror)Tr   NNNr   softmax)N)rA   )__doc__tensorflow.compat.v2compatv2rc   tf_keras.srcr   tf_keras.src.applicationsr   tf_keras.src.enginer   tf_keras.src.layersr   tf_keras.src.utilsr   r    tensorflow.python.util.tf_exportr	   r|   r}   rj   r   r   r   PREPROCESS_INPUT_DOCformatPREPROCESS_INPUT_RET_DOC_TFPREPROCESS_INPUT_ERROR_DOC r   r   <module>r      s    " !   4 ( 2 ) * :> 
D 
 
	 *,I #ttn	 <= > >?= @= *>>EE	22

3
3 F   
 ,>>FF  r   