
    &Vf                     h    d dl mZ d dlmZ d dlmZ  ed           G d de                      ZdS )    )backend)keras_export)Layerzkeras.layers.Dropoutc                   <     e Zd ZdZd fd	Zd	dZd Z fdZ xZS )
DropoutaB  Applies dropout to the input.

    The `Dropout` layer randomly sets input units to 0 with a frequency of
    `rate` at each step during training time, which helps prevent overfitting.
    Inputs not set to 0 are scaled up by `1 / (1 - rate)` such that the sum over
    all inputs is unchanged.

    Note that the `Dropout` layer only applies when `training` is set to `True`
    in `call()`, such that no values are dropped during inference.
    When using `model.fit`, `training` will be appropriately set to `True`
    automatically. In other contexts, you can set the argument explicitly
    to `True` when calling the layer.

    (This is in contrast to setting `trainable=False` for a `Dropout` layer.
    `trainable` does not affect the layer's behavior, as `Dropout` does
    not have any variables/weights that can be frozen during training.)

    Args:
        rate: Float between 0 and 1. Fraction of the input units to drop.
        noise_shape: 1D integer tensor representing the shape of the
            binary dropout mask that will be multiplied with the input.
            For instance, if your inputs have shape
            `(batch_size, timesteps, features)` and
            you want the dropout mask to be the same for all timesteps,
            you can use `noise_shape=(batch_size, 1, features)`.
        seed: A Python integer to use as random seed.

    Call arguments:
        inputs: Input tensor (of any rank).
        training: Python boolean indicating whether the layer should behave in
            training mode (adding dropout) or in inference mode (doing nothing).
    Nc                     t                      j        di | d|cxk    rdk    sn t          d|           || _        || _        || _        |dk    r$t          j                            |          | _	        d| _
        d S )Nr      zcInvalid value received for argument `rate`. Expected a float value between 0 and 1. Received: rate=T )super__init__
ValueErrorrateseednoise_shaper   randomSeedGeneratorseed_generatorsupports_masking)selfr   r   r   kwargs	__class__s        d/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/layers/regularization/dropout.pyr   zDropout.__init__)   s    ""6"""D~~~~A~~~~)"&) )  
 		&!88").">">t"D"DD $    Fc                     |r=| j         dk    r2t          j                            || j         | j        | j                  S |S )Nr   )r   r   )r   r   r   dropoutr   r   )r   inputstrainings      r   callzDropout.call8   sN     		A>))	 ,(	 *    r   c                     |S )Nr
   )r   input_shapes     r   compute_output_shapezDropout.compute_output_shapeB   s    r   c                 z    t                                                      }| j        | j        | j        d}i ||S )N)r   r   r   )r   
get_configr   r   r   )r   base_configconfigr   s      r   r#   zDropout.get_configE   sF    gg((**II+
 

 )+(((r   )NN)F)	__name__
__module____qualname____doc__r   r   r!   r#   __classcell__)r   s   @r   r   r      s         B% % % % % %     ) ) ) ) ) ) ) ) )r   r   N)	keras.srcr   keras.src.api_exportr   keras.src.layers.layerr   r   r
   r   r   <module>r.      s          - - - - - - ( ( ( ( ( ( $%%E) E) E) E) E)e E) E) &%E) E) E)r   