
    ~WhC                        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edz   Zedz   Zedz   Zedz   Zedz   Zedz   Z e            Zd Zd Zd Z	 	 	 	 	 	 	 d+dZ edd          	 	 	 	 	 	 	 d+d            Z edd          	 	 	 	 	 	 	 d+d            Z edd           	 	 	 	 	 	 	 d+d!            Z  ed"          d,d#            Z! ed$          d-d&            Z"ej#        $                    d'ej%        ej&        (          e!_         ej"        j         e"_         d)Z' e(ed*ej         e'z               e(ed*ej         e'z               e(e d*e j         e'z              dS ).zDenseNet models for Keras.

Reference:
  - [Densely Connected Convolutional Networks](
      https://arxiv.org/abs/1608.06993) (CVPR 2017)
    N)backend)imagenet_utils)training)VersionAwareLayers)
data_utils)layer_utils)keras_exportzFhttps://storage.googleapis.com/tensorflow/keras-applications/densenet/1densenet121_weights_tf_dim_ordering_tf_kernels.h57densenet121_weights_tf_dim_ordering_tf_kernels_notop.h51densenet169_weights_tf_dim_ordering_tf_kernels.h57densenet169_weights_tf_dim_ordering_tf_kernels_notop.h51densenet201_weights_tf_dim_ordering_tf_kernels.h57densenet201_weights_tf_dim_ordering_tf_kernels_notop.h5c           
      z    t          |          D ]*}t          | d|dz   t          |dz             z             } +| S )zA dense block.

    Args:
      x: input tensor.
      blocks: integer, the number of building blocks.
      name: string, block label.

    Returns:
      Output tensor for the block.
        _block   name)range
conv_blockstr)xblocksr   is       a/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/keras/applications/densenet.pydense_blockr   ?   sI     6]] A Aq"4(?SQZZ#?@@@H    c                    t          j                    dk    rdnd}t                              |d|dz             |           } t                              d|dz   	          |           } t                              t          t          j        |           |         |z            dd
|dz             |           } t                              dd|dz             |           } | S )zA transition block.

    Args:
      x: input tensor.
      reduction: float, compression rate at transition layers.
      name: string, block label.

    Returns:
      output tensor for the block.
    channels_last   r   >_bnaxisepsilonr   relu_relur   F_convuse_biasr      _poolstridesr   )	r   image_data_formatlayersBatchNormalization
ActivationConv2Dint	int_shapeAveragePooling2D)r   	reductionr   bn_axiss       r   transition_blockr:   O   s     ,../AAaaqG!!hTE\ 	" 	 			 		A 	&tg~66q99AGa  )I566	G^	 	 	 	
 		 		A 	14'>BB1EEAHr   c           	      v   t          j                    dk    rdnd}t                              |d|dz             |           }t                              d|dz   	          |          }t                              d
|z  dd|dz             |          }t                              |d|dz             |          }t                              d|dz   	          |          }t                              |ddd|dz             |          }t                              ||dz             | |g          } | S )zA building block for a dense block.

    Args:
      x: input tensor.
      growth_rate: float, growth rate at dense layers.
      name: string, block label.

    Returns:
      Output tensor for the block.
    r    r!   r   r"   _0_bnr$   r'   _0_relur      F_1_convr*   _1_bn_1_relusame_2_conv)paddingr+   r   _concat)r%   r   )r   r0   r1   r2   r3   r4   Concatenate)r   growth_rater   r9   x1s        r   r   r   i   sp    ,../AAaaqG		"	"hTG^ 
# 
 

	 
	B 
		6y(8		9	9"	=	=B		KU	1A 
 
 


 

B 
	"	"hTG^ 
# 
 


 

B 
		6y(8		9	9"	=	=B	QTI=M 
 
 


 

B 	dY.>??BHHAHr   Timagenet  softmaxc                 
   |dv s3t           j        j                            |          st	          d          |dk    r|r|dk    rt	          d          t          j        |ddt          j                    ||          }|t          
                    |
          }n3t          j        |          st          
                    ||          }n|}t          j                    dk    rdnd}	t                              d          |          }
t                              ddddd          |
          }
t                              |	dd          |
          }
t                              dd          |
          }
t                              d          |
          }
t                              ddd          |
          }
t#          |
| d          d!          }
t%          |
d"d#          }
t#          |
| d         d$          }
t%          |
d"d%          }
t#          |
| d         d&          }
t%          |
d"d'          }
t#          |
| d         d(          }
t                              |	dd)          |
          }
t                              dd          |
          }
|r^t                              d*          |
          }
t          j        ||           t                              ||d+,          |
          }
nS|d-k    r$t                              d*          |
          }
n)|d.k    r#t                              d/          |
          }
|t/          j        |          }n|}| g d0k    rt3          j        ||
d1          }nW| g d2k    rt3          j        ||
d3          }n7| g d4k    rt3          j        ||
d5          }nt3          j        ||
d6          }|dk    r|rr| g d0k    rt7          j        d7t:          d8d9:          }n| g d2k    rt7          j        d;t<          d8d<:          }n| g d4k    rt7          j        d=t>          d8d>:          }nq| g d0k    rt7          j        d?t@          d8d@:          }nK| g d2k    rt7          j        dAtB          d8dB:          }n%| g d4k    rt7          j        dCtD          d8dD:          }|#                    |           n||#                    |           |S )Eaz  Instantiates the DenseNet architecture.

    Reference:
    - [Densely Connected Convolutional Networks](
        https://arxiv.org/abs/1608.06993) (CVPR 2017)

    This function returns a Keras image classification model,
    optionally loaded with weights pre-trained on ImageNet.

    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/).

    Note: each Keras Application expects a specific kind of input preprocessing.
    For DenseNet, call `tf.keras.applications.densenet.preprocess_input` on your
    inputs before passing them to the model.
    `densenet.preprocess_input` will scale pixels between 0 and 1 and then
    will normalize each channel with respect to the ImageNet dataset statistics.

    Args:
      blocks: numbers of building blocks for the four dense layers.
      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 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 `(224, 224, 3)` (with `'channels_last'` data format)
        or `(3, 224, 224)` (with `'channels_first'` data format).
        It should have exactly 3 inputs channels,
        and width and height should be no smaller than 32.
        E.g. `(200, 200, 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.
    >   NrI   zThe `weights` argument should be either `None` (random initialization), `imagenet` (pre-training on ImageNet), or the path to the weights file to be loaded.rI   rJ   zWIf using `weights` as `"imagenet"` with `include_top` as true, `classes` should be 1000   r   )default_sizemin_sizedata_formatrequire_flattenweightsN)shape)tensorrS   r    r!   r   )r!   r!   rU   )rD   @      r,   Fz
conv1/conv)r/   r+   r   r"   zconv1/bnr$   r'   z
conv1/relur   )r   r   rX   pool1r.   r   conv2g      ?pool2conv3pool3conv4pool4conv5bnavg_poolpredictions)
activationr   avgmaxmax_pool            densenet121ri   rj   r   r   densenet169ri   rj   0   r   densenet201densenetr
   models 9d60b8095a5708f2dcce2bca79d332c7)cache_subdir	file_hashr    d699b8f76981ab1b30698df4c175e90br    1ceb130c1ea1b78c3bf6114dbdfd8807r    30ee3e1110167f948a6b9946edeeb738r    b8c4d4c20dd625c148057b9ff1c1176br    c13680b51ded0fb44dff2d8f86ac8bb1)$tfiogfileexists
ValueErrorr   obtain_input_shaper   r0   r1   Inputis_keras_tensorZeroPadding2Dr4   r2   r3   MaxPooling2Dr   r:   GlobalAveragePooling2Dvalidate_activationDenseGlobalMaxPooling2Dr   get_source_inputsr   Modelr   get_fileDENSENET121_WEIGHT_PATHDENSENET169_WEIGHT_PATHDENSENET201_WEIGHT_PATHDENSENET121_WEIGHT_PATH_NO_TOPDENSENET169_WEIGHT_PATH_NO_TOPDENSENET201_WEIGHT_PATH_NO_TOPload_weights)r   include_toprR   input_tensorinput_shapepoolingclassesclassifier_activation	img_inputr9   r   inputsmodelweights_paths                 r   DenseNetr      s   R )))RU[-?-?-H-H)<
 
 	
 *D1
 
 	
 !3-//#  K LL{L33		&|44 	%LLLII$I,../AAaaqG%566yAAAb!Q\JJ1MMA!!hZ 	" 	 			 		A 	&|44Q77A%566q99AAqw77::AAvayw///ACg...AAvayw///ACg...AAvayw///ACg...AAvayw///A!!wt!LLQOOA&v..q11A >))z)::1==*+@'JJJLL 5M  
 

  e--:->>qAAAA))z)::1==A .|<<   vq}===	???	"	"vq}===	???	"	"vq}===vqz::: * +	(()2G+!)@	      ???**)2G+!)@	      ???**)2G+!)@	      (()2M2!)@	      ???**)2M2!)@	      ???**)2M2!)@	      	<((((		7###Lr   z'keras.applications.densenet.DenseNet121zkeras.applications.DenseNet121c           
      2    t          g d| ||||||          S )z*Instantiates the Densenet121 architecture.rh   r   r   rR   r   r   r   r   r   s          r   DenseNet121r   Y  2     	 	 	r   z'keras.applications.densenet.DenseNet169zkeras.applications.DenseNet169c           
      2    t          g d| ||||||          S )z*Instantiates the Densenet169 architecture.rn   r   r   s          r   DenseNet169r   r  r   r   z'keras.applications.densenet.DenseNet201zkeras.applications.DenseNet201c           
      2    t          g d| ||||||          S )z*Instantiates the Densenet201 architecture.rp   r   r   s          r   DenseNet201r     r   r   z,keras.applications.densenet.preprocess_inputc                 0    t          j        | |d          S )Ntorch)rP   mode)r   preprocess_input)r   rP   s     r   r   r     s#    *	{   r   z.keras.applications.densenet.decode_predictions   c                 .    t          j        | |          S )N)top)r   decode_predictions)predsr   s     r   r   r     s    ,U<<<<r    )r   reterrora  

  Reference:
  - [Densely Connected Convolutional Networks](
      https://arxiv.org/abs/1608.06993) (CVPR 2017)

  Optionally loads weights pre-trained on ImageNet.
  Note that the data format convention used by the model is
  the one specified in your Keras config at `~/.keras/keras.json`.

  Note: each Keras Application expects a specific kind of input preprocessing.
  For DenseNet, call `tf.keras.applications.densenet.preprocess_input` on your
  inputs before passing them to the model.

  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 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 `(224, 224, 3)` (with `'channels_last'` data format)
      or `(3, 224, 224)` (with `'channels_first'` data format).
      It should have exactly 3 inputs channels,
      and width and height should be no smaller than 32.
      E.g. `(200, 200, 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.
__doc__)TrI   NNNrJ   rK   )N)r   ))r   tensorflow.compat.v2compatv2r}   kerasr   keras.applicationsr   keras.enginer   keras.layersr   keras.utilsr   r    tensorflow.python.util.tf_exportr	   BASE_WEIGHTS_PATHr   r   r   r   r   r   r1   r   r:   r   r   r   r   r   r   r   PREPROCESS_INPUT_DOCformatPREPROCESS_INPUT_RET_DOC_TORCHPREPROCESS_INPUT_ERROR_DOCDOCsetattr r   r   <module>r      ss     " ! ! ! ! ! ! ! !       - - - - - - ! ! ! ! ! ! + + + + + + " " " " " " # # # # # # : 9 9 9 9 9 M  KK  ?@ 
 KK  ?@ 
 KK  ?@ 
 
			     4  @ #O O O Od -/O  #   , -/O  #   , -/O  #   , <==   >= >??= = = @?= *>EE	5

3 F    
 ,>F  3j Y 3c 9 : : : Y 3c 9 : : : Y 3c 9 : : : : :r   