
    &Vf)                     ~    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dS )	    )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).
    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      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)selfr   r   kwargs	__class__s       k/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/layers/regularization/gaussian_noise.pyr   zGaussianNoise.__init__   s    ""6"""Fa-$*- -  
 	A::").">">t"D"DD $    Fc                     |rS| j         dk    rH|t          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*   sb     	aGN11i''{(( 2     r   c                     |S Nr   )r   input_shapes     r   compute_output_shapez"GaussianNoise.compute_output_shape5   s    r   c                 n    t                                                      }| j        | j        d}i ||S )N)r   r   )r   
get_configr   r   )r   base_configconfigr   s      r   r(   zGaussianNoise.get_config8   s@    gg((**kI
 
 )+(((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>r3      s                      - - - - - - *++6) 6) 6) 6) 6)FL 6) 6) ,+6) 6) 6)r   