o
    2hH                     @   sN   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 dejZdS )	    )backend)layers)ops)keras_exportzkeras.layers.GaussianNoisec                       s@   e Zd ZdZd fdd	ZdddZdd	 Z fd
dZ  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                    sj   t  jdi | d|  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_build_at_init)selfr   r   kwargs	__class__r   i/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/layers/regularization/gaussian_noise.pyr
      s   zGaussianNoise.__init__Fc                 C   s8   |r| j dkr|tjjt|d| j | j| jd S |S )Nr   g        )shapemeanr   dtyper   )r   r   r   normalr   r   compute_dtyper   )r   inputstrainingr   r   r   call,   s   zGaussianNoise.callc                 C   s   |S Nr   )r   input_shaper   r   r   compute_output_shape7   s   z"GaussianNoise.compute_output_shapec                    s$   t   }| j| jd}i ||S )N)r   r   )r	   
get_configr   r   )r   base_configconfigr   r   r   r#   :   s
   
zGaussianNoise.get_configr    )F)	__name__
__module____qualname____doc__r
   r   r"   r#   __classcell__r   r   r   r   r      s    
r   N)	keras.srcr   r   r   keras.src.api_exportr   Layerr   r   r   r   r   <module>   s    