
    2VhH                     t    d dl mZ d dl mZ d dl mZ d dlmZ  ed       G d dej                               Zy)	    )backend)layers)ops)keras_exportzkeras.layers.GaussianNoisec                   <     e Zd ZdZd fd	ZddZd Z fdZ xZS )GaussianNoisea  Apply additive zero-centered Gaussian noise.

    This is useful to mitigate overfitting
    (you could see it as a form of random data augmentation).
    Gaussian Noise (GS) is a natural choice as corruption process
    for real valued inputs.

    As it is a regularization layer, it is only active at training time.

    Args:
        stddev: Float, standard deviation of the noise distribution.
        seed: Integer, optional random seed to enable deterministic behavior.

    Call arguments:
        inputs: Input tensor (of any rank).
        training: Python boolean indicating whether the layer should behave in
            training mode (adding noise) or in inference mode (doing nothing).
    c                     t        |   di | d|cxk  rdk  sn t        d|       || _        || _        |dkD  r$t
        j                  j                  |      | _        d| _	        | j                          y )Nr      zgInvalid value received for argument `stddev`. Expected a float value between 0 and 1. Received: stddev=T )super__init__
ValueErrorstddevseedr   randomSeedGeneratorseed_generatorsupports_masking_build_at_init)selfr   r   kwargs	__class__s       ^/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/layers/regularization/gaussian_noise.pyr   zGaussianNoise.__init__   s~    "6"Fa$$*8- 
 	A:")..">">t"DD $    c                     |rg| j                   dkD  rX|t        j                  j                  t	        j
                  |      d| j                   | j                  | j                        z   S |S )Nr   g        )shapemeanr   dtyper   )r   r   r   normalr   r   compute_dtyper   )r   inputstrainings      r   callzGaussianNoise.call,   sa    aGNN11ii'{{(((( 2    r   c                     |S Nr   )r   input_shapes     r   compute_output_shapez"GaussianNoise.compute_output_shape7   s    r   c                 ^    t         |          }| j                  | j                  d}i ||S )N)r   r   )r   
get_configr   r   )r   base_configconfigr   s      r   r)   zGaussianNoise.get_config:   s7    g(*kkII
 )+(((r   r%   )F)	__name__
__module____qualname____doc__r   r#   r'   r)   __classcell__)r   s   @r   r   r      s!    & 	) )r   r   N)	keras.srcr   r   r   keras.src.api_exportr   Layerr   r   r   r   <module>r4      s6       - *+8)FLL 8) ,8)r   