
    2Vhd                         d dl Z d dlmZ d dlmc 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  ej$                         d	        Zdd
ZddZddZddZddZd ZddZddZddZddZddZy)    N)floatx)convert_to_tensor)
get_device)to_torch_dtype)SeedGenerator)	draw_seed)make_default_seedc                     t        |       \  }}t               }|dk(  ry t        j                  t                     }|j	                  t        ||z                |S )Nmetadevice)r   r   torch	Generatormanual_seedint)seed
first_seedsecond_seedr   	generators        N/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/torch/random.pytorch_seed_generatorr      sP    'oJ\Fz|4I#j;678    c           	          |xs
 t               }t        |      }t               dk(  r"t        j                  ||| |t                     S t        |      }t        j                  ||| ||t                     S )Nr   sizedtyper   r   r   r   r   )r   r   r   r   normalr   )shapemeanstddevr   r   r   s         r   r   r      sq    VXE5!E|v||&uE*,
 	
 %T*I<<| r   c                 *   t        |       } t        |      }t        j                  | d      }t	               dk(  r't        j
                  ||d      j                  |      S t        |      }t        j
                  ||d|      j                  |      S )N)dimr   T)replacement)r%   r   )r   r   r   softmaxr   multinomialtyper   )logitsnum_samplesr   r   probsr   s         r   categoricalr,   /   s    v&F5!EMM&b)E|v  
 $u+		
 %T*I	
 d5kr   c                 L   |xs
 t               }t        |      }| }t        |      dk(  rd} t               dk(  r!t	        j
                  | |t                     }n,t        |      }t	        j
                  | ||t                     }||z
  |z  |z   }t        |      dk(  r|d   S |S )Nr   )   r   r   r   )r   r   lenr   r   randr   )	r   minvalmaxvalr   r   requested_shaperand_tensorr   outputs	            r   uniformr6   C   s    VXE5!EO
?q |vjje5N(.	jj)5
 vo,v5F
?q ayMr   c           	          t        |      }t               dk(  r"t        j                  ||| |t                     S t	        |      }t        j                  ||| ||t                     S )Nr   )lowhighr   r   r   )r8   r9   r   r   r   r   )r   r   r   randintr   )r   r1   r2   r   r   r   s         r   r:   r:   Y   si    5!E|v}}<
 	
 %T*I==| r   c                    t        |      }t        t        |       dz   dd||      }|dkD  |dk  z  }|j                  dd	      d   }t	        j
                  | |t               
      }|j                  j                  |j                  d|      j                  d             |j                  j                  |      j                  |       |S )N)   r   r.   )r    r!   r   r      r#   T)keepdim)r   r   )r   r   tuplemaxr   emptyr   datacopy_gathersqueezemul_add_)	r   r    r!   r   r   xvalidindexestrunc_xs	            r   truncated_normalrM   o   s    5!E 	uU|d"1EMAVAEiiDi)!,Gkk%uZ\BGLLqxxG,44R89LLf""4(Nr   c                     || j                   S | j                   }g }t        |      D ]  \  }}|j                  |||   n|        |S )N)r   	enumerateappend)inputsnoise_shapeconcrete_inputs_shapeconcrete_noise_shapeivalues         r   _get_concrete_noise_shaperW   |   s_    ||"LLk* 
5##(-!!$5	

  r   c                 Z   |t        |t              r|j                  |d|z
  }t        | |      }t	        j
                  ||t                     }t        |      }t               dk(  rt	        j                  |      }nt	        j                  ||      }|j                         }t	        j                  || j                        }t	        j                  || |z  t	        j                  | | j                              S t        j                  j                   j#                  | |dd      S )	N      ?r   r   )r   )r   TF)ptraininginplace)
isinstancer   _initial_seedrW   r   fullr   r   	bernoulliboolbroadcast_tor   where
zeros_liker   nn
functionaldropout)rQ   raterR   r   	keep_probkeep_prob_matrixr   masks           r   rg   rg      s   D-0T5G5G5O"$J	/D :::<
 ).	 <6!??#34D??#3yIDyy{!!$5{{YV6<<8
 	
 88&&$u '  r   c                 P   t        |       } t               dk(  r?t        j                  | j                  d |dz    t                     j                  |      }nJt        |      }t        j                  | j                  d |dz    |t                     j                  |      }t        | j                  |z
  dz
        D ]  }|j                  d         |j                  g t        |dz         D cg c]  }d c}| j                  |dz   d   }| j                  ||      S c c}w )Nr   r.   r   )r   r   r#   )r   r   r   r0   r   argsortr   rangendim
unsqueeze_repeatrE   )rI   axisr   row_permr   _s         r   shuffleru      s   !A |v::aggjq1*,GOO
 ).	::GGJdQh9Z\

'$- 	 166D=1$%  B  x 4!8_	%!	%)*)<H 88D(## 
&s   0	D#
c                 &   |xs
 t               }t        |      }t        j                  t	        |      |       }t        j
                  | t                     }t        j                  j                         }t               dk(  s&t        |      \  }}t        j                  ||z          t        j                  j                  j                  ||      }|j                         j                  |      }	t        j                  j!                  |       |	S )Nr   r   )r   r   r   rb   r   onesr   randomget_rng_stater   r   distributionsgammaGammasampler(   set_rng_state)
r   alphar   r   betaprev_rng_stater   r   gamma_distributionr}   s
             r   r{   r{      s    VXE5!E07?E::eJL1D\\//1N<6!"+D/
K*{23,,2288E&&(--e4F	LL~.Mr   c                 (   |xs
 t               }t        |      }t        j                  t	        |      |       }t        j                  t	        |      |       }t        j
                  j                         }t               dk(  s&t        |      \  }}t        j                  ||z          t        j                  j                  j                  ||      }|j                         j                  |      }	t        j
                  j                  |       |	S )Nr   )total_countr+   )r   r   r   rb   r   rx   ry   r   r   r   rz   binomialBinomialr}   r(   r~   )
r   countsprobabilitiesr   r   r   r   r   binomial_distributionr}   s
             r   r   r      s    VXE5!E 1& 95AF&&'8'GOM\\//1N<6!"+D/
K*{23!//88AA- B  #))+007F	LL~.Mr   c                 (   |xs
 t               }t        |      }t        j                  t	        |      |       }t        j                  t	        |      |       }t        j
                  j                         }t               dk(  s&t        |      \  }}t        j                  ||z          t        j                  j                  j                  ||      }|j                         j                  |      }	t        j
                  j                  |       |	S )Nr   )concentration1concentration0)r   r   r   rb   r   rx   ry   r   r   r   rz   r   Betar}   r(   r~   )
r   r   r   r   r   r   r   r   beta_distributionr}   s
             r   r   r      s    VXE5!E07?E/5u=D\\//1N<6!"+D/
K*{23++0055T 6  %%',,U3F	LL~.Mr   )g        rY   NN)int32N)NN)r   N)r   torch._dynamo_dynamodynamotorch.nn.functionalre   rf   tnnkeras.src.backend.configr   keras.src.backend.torch.corer   r   r   keras.src.random.seed_generatorr   r   r	   disabler   r   r,   r6   r:   rM   rW   rg   ru   r{   r   r    r   r   <module>r      s{      ! ! + : 3 7 9 5 =
  &(,,

 B$2 $r   