o
    2h                     @   s   d dl Zd dlm  m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l
mZ d dlmZ d d	lmZ d d
lmZ d#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dZd&ddZd&dd Zd&d!d"ZdS )(    N)Type)floatx)OPENVINO_DTYPES)OpenVINOKerasTensor)convert_to_numpy)get_ov_output)SeedGenerator)	draw_seed)make_default_seed              ?c                 C   sJ   |pt  }t|}tj|j}|j| ||d|}tt	
|dS )N)sizelocscaler   )r   r	   nprandomdefault_rngdatanormalastyper   ov_opsetconstantoutput)shapemeanstddevdtypeseedrngnormal_const r    \/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/backend/openvino/random.pyr      s
   
r   c                 C   s   |pt  }t| }t|}t|trt|\}}nt|j\}}tj||d}tj||d}	t| t	r7t
| } tj| tjd}
t|
||	|||}t|dS )N)r   r   )r   r   r	   
isinstancer   r   r   r   r   tuplelistr   i32random_uniformr   )r   minvalmaxvalr   r   ov_typeseed1seed2minval_constmaxval_constoutput_shape_constr&   r    r    r!   uniform   s   


r/   int64c                 C   s  |pd}t | }t| } tdtjd}tdtjd}tdtjd}tj| ddd}t||d}	t	| tjd}
t	|
tjd}t
||d}t||d}tj|||tjdd}tj|
|ddd}t|gtjd}tj||gddd}t|}t|trt|\}}n|j\}}| }td|d}td|d}t||||||d}t||d}t|	|d}t||d}tt|tjd|d}t||d}t|S )	Nr0   r      )axis)output_typer   r   )r   r   r   r   r   r%   r   softmaxcumsumshape_ofsqueezesubtractrangegatherconcatr	   r"   r   r   r   get_element_typer&   	unsqueezegreater
reduce_sumconvert)logitsnum_samplesr   r   ov_dtype
zero_const	one_constneg_one_constprobscumsum_probslogits_shaperankrank_scalarrank_minus_1batch_indicesbatch_shapenum_samples_constfinal_shapeseed_tensorr*   r+   probs_dtype
zero_float	one_floatrandrand_unsqueezedcumsum_unsqueezedr?   samplesresultr    r    r!   categorical*   s\   


r[   int32c                 C      t d)Nz0`randint` is not supported with openvino backendNotImplementedError)r   r'   r(   r   r   r    r    r!   randintd      r`   c                 C   s   |pt  }t|}tj|j}|d|  }|d|  }t| }td}	|	jd |k rL|j	|||d}
|
|
|k|
|k@  }t
|	|}	|	jd |k s-|	d | || }tt|dS )N   r   )r   r   r   )r   r	   r   r   r   r   prodemptyr   r   appendr   reshaper   r   r   r   )r   r   r   r   r   r   lower_boundupper_bound
flat_shaperandom_numbersbatchvalidnp_array_resr    r    r!   truncated_normalj   s   


rn   c                 C   r]   )Nz0`dropout` is not supported with openvino backendr^   )inputsratenoise_shaper   r    r    r!   dropout   ra   rr   c                 C   r]   )Nz0`shuffle` is not supported with openvino backendr^   )xr3   r   r    r    r!   shuffle   ra   rt   c                 C   r]   )Nz.`gamma` is not supported with openvino backendr^   )r   alphar   r   r    r    r!   gamma      rv   c                 C   r]   )Nz1`binomial` is not supported with openvino backendr^   )r   countsprobabilitiesr   r   r    r    r!   binomial   ra   rz   c                 C   r]   )Nz-`beta` is not supported with openvino backendr^   )r   ru   betar   r   r    r    r!   r{      rw   r{   )r   r   NN)r0   N)r\   N)NN)r   N)numpyr   openvino.runtime.opset14runtimeopset14r   openvinor   keras.src.backend.configr   keras.src.backend.openvino.corer   r   r   r   keras.src.random.seed_generatorr   r	   r
   r   r/   r[   r`   rn   rr   rt   rv   rz   r{   r    r    r    r!   <module>   s*    



:




