o
    2h
                     @   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 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)floatx)SeedGenerator)	draw_seed)make_default_seedc                 C   s   t | tjr| S t| S N)
isinstancejaxArrayr   )seed r   W/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/backend/jax/random.pyjax_draw_seed	   s   r                 ?c                 C   s0   |pt  }t|}tjj|| |d}|| | S N)shapedtype)r   r   r   randomnormalr   meanstddevr   r
   sampler   r   r   r      s   
r   c                 C   s(   |pt  }t|}tjj|| |||dS N)r   r   minvalmaxval)r   r   r   r   uniformr   r   r   r   r
   r   r   r   r      s
   

r   int32c                 C   sD   t |}t| j}||d< t|}tjj|| d |dd}||S )N   ).N)r   axis)r   listr   tupler   r   categoricalastype)logitsnum_samplesr   r
   output_shapeoutputr   r   r   r#      s   

r#   c                 C   s   t |}tjj|| |||dS r   )r   r   r   randintr   r   r   r   r)   *   s   
r)   c                 C   s4   |pt  }t|}tjj|| dd|d}|| | S )Ng       g       @)r   lowerupperr   )r   r   r   r   truncated_normalr   r   r   r   r,   1   s   

r,   c                 C   sH   |d u r| j S | j }g }t|D ]\}}||d u r|| n| q|S r   )r   	enumerateappend)inputsnoise_shapeconcrete_inputs_shapeconcrete_noise_shapeivaluer   r   r   _get_concrete_noise_shape:   s   r5   c                 C   sX   t |}d| }t| |}tjj|||d}tj|| j}tj	|| | tj
| S )Nr   )pr   )r   r5   r   r   	bernoullinumpybroadcast_tor   laxselect
zeros_like)r/   rater0   r
   	keep_probmaskr   r   r   dropoutG   s   
r@   c                 C   s   t |}tjj|| |ddS )NT)independent)r   r   r   permutation)xr    r
   r   r   r   shuffleT   s   rD   c                 C   s&   t |}|pt }tjj||| |dS r   )r   r   r   r   gamma)r   alphar   r
   r   r   r   rE   Y   s   
rE   c                 C   D   |pt  }t|}tj|}tj|}tjj|||| |d}|S )N)keynr6   r   r   )r   r   r   r8   arrayr   binomial)r   countsprobabilitiesr   r
   r   r   r   r   rK   _      

rK   c                 C   rG   )N)rH   abr   r   )r   r   r   r8   rJ   r   beta)r   rF   rQ   r   r
   r   r   r   r   rQ   k   rN   rQ   )r   r   NN)r   N)NN)r   N)r   keras.src.backend.configr   keras.src.random.seed_generatorr   r   r   r   r   r   r#   r)   r,   r5   r@   rD   rE   rK   rQ   r   r   r   r   <module>   s"    




	



