o
    2hK                     @   s   d dl 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 Z
d#ddZd#ddZd$ddZd%ddZd#ddZdd Zd&ddZd'ddZd&ddZd&dd Zd&d!d"ZdS )(    N)standardize_dtype)floatx)SeedGenerator)	draw_seed)make_default_seedc                 C   s6   t | jdkr	| S tjtj| tjjd dd} | S )Nint32   dtype)r   r
   tfcastmathfloormodr   maxseed r   ^/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/backend/tensorflow/random.py
_cast_seed
   s    r                 ?c                 C   ,   |pt  }tt|}tjj| ||||dS Nshapemeanstddevr
   r   )r   r   r   r   randomstateless_normalr   r   r   r   normal   
   

r   c                 C   s<   |pt  }tt|}tjj| t||t||||dS )Nr   minvalmaxvalr
   r   )r   r   r   r   r   stateless_uniformr   r!   r   r   r   uniform   s   


r%   int64c                 C   s*   t t|}tjj| ||d}t||S )Nr   )r   r   r   r   stateless_categoricalr   )logitsnum_samplesr
   r   outputr   r   r   categorical+   s   r+   r   c                 C   sB   |}t |dvr
d}tt|}tjj| ||||d}t||S )N)r   r&   r&   r!   )r   r   r   r   r   r$   r   )r   r"   r#   r
   r   intermediate_dtyper*   r   r   r   randint1   s   r-   c                 C   r   r   )r   r   r   r   r   stateless_truncated_normalr   r   r   r   truncated_normal@   r    r/   c                 C   sP   |d u r	t | S t | }g }t|D ]\}}||d u r"|| n| q|S )N)r   r   	enumerateappend)inputsnoise_shapeconcrete_inputs_shapeconcrete_noise_shapeivaluer   r   r   _get_concrete_noise_shapeH   s   

r8   c                 C   s,   t t|}t| |}tjjj| |||dS )N)rater3   r   )r   r   r8   r   nnexperimentalstateless_dropout)r2   r9   r3   r   r   r   r   dropoutU   s   
r=   c                 C   s>   t t|}ttjjt| | g|d}tj| ||dS )N)r   r   )axis)r   r   r   argsortr   r$   r   gather)xr>   r   indicesr   r   r   shuffle`   s
   rC   c                 C   sF   |pt  }tt|}|}t|dkrd}ttjj| |||d|S )Nbfloat16float32)alphar
   r   )r   r   r   r   r   r   r   stateless_gamma)r   rF   r
   r   r,   r   r   r   gammah   s   
rH   c              	   C   sH   |pt  }tt|}|}t|dkrd}ttjj| ||||d|S )NrD   rE   )r   r   countsprobsoutput_dtype)r   r   r   r   r   r   r   stateless_binomial)r   rI   probabilitiesr
   r   r,   r   r   r   binomialz   s   
rN   c                 C   s   |pt  }tt|}|d }|}t|dkrd}tj||d}tj||d}t|| }t|| }ttjj	| |||d|}ttjj	| |||d|}	|||	  }
|
S )N   rD   rE   r	   )r   r   rF   r
   )
r   r   r   r   r   convert_to_tensorbroadcast_tor   r   rG   )r   rF   betar
   r   seed_1seed_2r,   gamma_agamma_bsampler   r   r   rR      s0   

rR   )r   r   NN)r&   N)r   N)NN)r   N)
tensorflowr   keras.src.backend.commonr   keras.src.backend.configr   keras.src.random.seed_generatorr   r   r   r   r   r%   r+   r-   r/   r8   r=   rC   rH   rN   rR   r   r   r   r   <module>   s$    








