o
    2hp                     @   s   d dl m  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 Zd-ddZd/ddZdd Zdd Zdd Zd0ddZd0ddZ	
d1dd Z			
d2d!d"Zd#d$ Zd%d& Zd'd( Zd)d* Zd3d+d,ZdS )4    N)Type)OpenVINOKerasTensor)get_ov_outputFc                 C      t d)Nz4`segment_sum` is not supported with openvino backendNotImplementedErrordatasegment_idsnum_segmentssorted r   Z/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/backend/openvino/math.pysegment_sum      r   c                 C   r   )Nz4`segment_max` is not supported with openvino backendr   r   r   r   r   segment_max   r   r   Tc           	      C   s^   t | } tj|tjd}d}|rdnd}t| ||d|}|d}|d}t|t|fS )N)dtypevaluenonemaxr      )r   ov_opsetconstantr   i32topkoutputr   )	xkr   k_tensoraxis	sort_type	topk_nodevaluesindicesr   r   r   top_k   s   

r%   c                 C   r   )Nz1`in_top_k` is not supported with openvino backendr   )targetspredictionsr   r   r   r   in_top_k   r   r(   c                 C   s(  t | } |d u rtdgtjd}t| |dd} d}t|tr(t	|}t|tjd}td| 
 d}t| |dd}t|d}t|||d}t| |d}t|d}	t|	||d}
t|
d}|st||d}t||d}t|S )Nr   r   FT)r   r   r   r   r   r   reshape
isinstancetuplelistget_element_type
reduce_max	is_finiteselectsubtractexp
reduce_sumlogsqueezeaddr   )r   r    keepdimsflatten_shape
const_zeror.   r/   norm_maxnorm_max_subexp_norm_maxsum_explog_sum_expr   r   r   	logsumexp%   s(   
r?   reducedc                 C   r   )Nz+`qr` is not supported with openvino backendr   )r   moder   r   r   qr>      rB   c                 C   r   )Nz:`extract_sequences` is not supported with openvino backendr   )r   sequence_lengthsequence_strider   r   r   extract_sequencesB   r   rF   c                 C   r   )Nz,`fft` is not supported with openvino backendr   r   r   r   r   fftH   rC   rH   c                 C   r   )Nz-`fft2` is not supported with openvino backendr   rG   r   r   r   fft2L   rC   rI   c                 C   r   )Nz-`rfft` is not supported with openvino backendr   r   
fft_lengthr   r   r   rfftP   rC   rL   c                 C   r   )Nz.`irfft` is not supported with openvino backendr   rJ   r   r   r   irfftT   rC   rM   hannc                 C   r   )Nz-`stft` is not supported with openvino backendr   )r   rD   rE   rK   windowcenterr   r   r   stftX   s   rQ   c                 C   r   )Nz.`istft` is not supported with openvino backendr   )r   rD   rE   rK   lengthrO   rP   r   r   r   istft^   s   	rS   c                 C   sD   t | } td|  d}t| d}tt||dS )Nr   r   )r   r   r   r-   r   sqrtr   divide)r   	const_onerT   r   r   r   rsqrtj   s   rW   c                 C   s    t | } t| d}t|S )Nr   )r   r   erfr   r   )r   rX   r   r   r   rX   q   s   rX   c                 C   r   )Nz/`erfinv` is not supported with openvino backendr   rG   r   r   r   erfinvw   rC   rY   c                 C   r   )Nz.`solve` is not supported with openvino backendr   )abr   r   r   solve{   rC   r\   c                 C   r   )Nz-`norm` is not supported with openvino backendr   )r   ordr    r7   r   r   r   norm   rC   r^   )NF)T)r@   )N)rN   T)NrN   T)NNF)openvino.runtime.opset14runtimeopset14r   openvinor   keras.src.backend.openvino.corer   r   r   r   r%   r(   r?   rB   rF   rH   rI   rL   rM   rQ   rS   rW   rX   rY   r\   r^   r   r   r   r   <module>   s4    








