
    ni                     "    S SK Js  Jr  S SKrS SKr \R                  R                  R                  5       rS rS rS rS rSS jr  SS jrS rS	 rS
 rS r " S S\5      r " S S\5      rg! \ a    S SKr Ntf = f! \ a    Sr NUf = f)    Nc                  *    S[         R                  S'   g )Nz-1CUDA_VISIBLE_DEVICES)osenviron     c/home/james-whalen/.local/lib/python3.13/site-packages/pybullet_envs/deep_mimic/learning/tf_util.pydisable_gpur
      s    '+"**#$r   c                     U R                  5        Vs/ s H  oR                  PM     nn[        S U 5       5      (       d   S5       eU$ s  snf )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7fN)
isinstanceint).0as     r	   	<genexpr>var_shape.<locals>.<genexpr>   s     -AZ3s   z0shape function assumes that shape is fully known)	get_shapevalueall)xkouts      r	   	var_shaper      sE    ++-(-Q-#(	--	-	-a/aa	-	* 	)s   A
c                 @    [        [        R                  " U 5      5      $ r   )r   npprod)r   s    r	   intprodr      s    	RWWQZr   c                 .    [        [        U 5      5      nU$ r   )r   r   )r   ns     r	   numelr!      s    il!	
(r   c                     [         R                  " XU5      n[         R                  " [        X5       VVs/ s H&  u  pE[         R                  " U[        U5      /5      PM(     snnSS9$ s  snnf )Nr   axistf	gradientsconcatzipreshaper!   )lossvar_listgrad_ysgradsvgrads         r	   	flat_gradr1   "   sP    
,,tw
/%	#hBVWBVYaBJJteAhZ0BVW^_	``Ws   -A*
c                 h   U n[        U5       Hd  u  pg[        R                  " [        U5      US9   [        R                  R                  UU[        U[        U5      S-
  :  a  UOS S9nS S S 5        Mf     U(       a#  US   S:X  d   e[        R                  " US/5      nU$ ! , (       d  f       M  = f)N)reuse   )inputsunitskernel_initializer
activation)		enumerater&   variable_scopestrlayersdensexavier_initializerlenr*   )inputlayers_sizesr8   r3   flattencurr_tfisizes           r	   fc_netrG   '   s    '<(ga			3q6	/		w&*3E9:S=NQR=R9R:X\   ^g 
0	/ ) q   jj2$'G	. 
0	/s   9B""
B1	c                     [        U5      [        U5      :X  d   eU R                  [        [        S [	        X5      5      5      5        g )Nc                 0    U S   R                  U S   5      $ )Nr4   r   )assign)r/   s    r	   <lambda>copy.<locals>.<lambda>9   s    adkk!A$/r   )r@   runlistmapr)   )sesssrcdsts      r	   copyrS   7   s8    	SSX		((4/S?@Ar   c                     [         R                  " X5      n[         R                  " S[        X5       VVs/ s H&  u  p4[         R                  " U[        U5      /5      PM(     snnS9$ s  snnf Nr   )r$   valuesr%   )r+   r,   r.   r/   r0   s        r	   r1   r1   =   sT    
,,t
&%	ILXI]^I]IQ2::dU1XJ7I]^
` `^s   -A)c                    [         R                  " [         R                  " U 5      S   5      nUc  U nOX-
  nS[         R                  " [         R                  " XB-  5      SS9-  nUSU-  [
        R                  " S[
        R                  -  5      -  [         R                  " [         R                  " U5      SS9-
  -  nU$ )Nr9   g      r#      )r&   to_floatshape
reduce_sumsquarer   logpi)x_tfmean_tfstd_tfdimdiff_tflogp_tfs         r	   calc_logp_gaussianre   C   s    
BHHTN2&'#_GnG2==7+;!<2FF'	TCZ"&&RUU++bmmBFF6NQS.TTT'	.r   c                 B   [         R                  " X-
  S5      n[         R                  " X-
  S5      n[         R                  " [         R                  " U5      SS9[         R                  " [         R                  " U5      SS9-   nS[         R
                  " U5      -  nU$ )Nr   r9   r#   g      ?)r&   minimummaximumr[   r\   reduce_mean)r_   	bound_min	bound_maxviolation_minviolation_max	violationr+   s          r	   calc_bound_lossro   Q   sx    **T-q1-**T-q1-mmBIIm42>iiRB) ))	r~~i(	($	+r   c                   :    \ rS rSr\R
                  4S jrS rSrg)SetFromFlat[   c                    / n[        [        [        U5      5      n[        R                  " U Vs/ s H  n[        U5      PM     sn5      nXl        [        R                  " X7/5      U l	        Sn/ n[        XR5       H^  u  pi[        U5      n
UR                  [        R                  " U	[        R                  " U R                  XU
-    U5      5      5        X-  nM`     [        R                  " U6 U l        g s  snf )Nr   )rN   rO   r   r   sumr   rP   r&   placeholderthetar)   appendrJ   r*   groupop)selfrP   r,   dtypeassignsshapesrZ   
total_sizestartr/   rF   s              r	   __init__SetFromFlat.__init__]   s    G#i*+FV<VEV<=JI|4DJEG&+
U^dnnRYYq"**TZZdl-KU"STUme ,
 hh DG
 =s   C8c                 d    U R                   R                  U R                  U R                  U0S9  g )N)	feed_dict)rP   rM   ry   rv   )rz   rv   s     r	   __call__SetFromFlat.__call__p   s&    IIMM$''djj%%8M9
r   )ry   rP   rv   N)	__name__
__module____qualname____firstlineno__r&   float32r   r   __static_attributes__r   r   r	   rq   rq   [   s    +-:: &r   rq   c                        \ rS rSrS rS rSrg)GetFlatu   c                     Xl         [        R                  " SU Vs/ s H$  n[        R                  " U[	        U5      /5      PM&     snS9U l        g s  snf rU   )rP   r&   r(   r*   r!   ry   )rz   rP   r,   r/   s       r	   r   GetFlat.__init__w   sB    IiiQ8'T8a

1uQxj(A8'TUDG
 (Us   +A
c                 L    U R                   R                  U R                  5      $ r   )rP   rM   ry   )rz   s    r	   r   GetFlat.__call__|   s    99==!!r   )ry   rP   N)r   r   r   r   r   r   r   r   r   r	   r   r   u   s    
"r   r   r   )NF)tensorflow.compat.v1compatv1r&   	Exception
tensorflownumpyr   r   contribr=   r?   r
   r   r   r!   r1   rG   rS   re   ro   objectrq   r   r   r   r	   <module>r      s   ##  	zz((;;=
	

a
 37 	`& 4"f "e    s"   	A3 $B 3
B ?B BB