
    &`i                         d dl mZ d dlZ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lmZ d dlmZmZmZ  e            \  ZZZe G d	 d
e	                      ZdS )    )DictN)normc_initializer)	TFModelV2)get_activation_fn)OldAPIStack)try_import_tf)ListModelConfigDict
TensorTypec            
            e Zd ZdZdej        j        dej        j        dedede	f
 fdZ
dee	ef         d	ee         d
edeee         ffdZdefdZ xZS )FullyConnectedNetworkz;Generic fully connected network implemented in ModelV2 API.	obs_spaceaction_spacenum_outputsmodel_confignamec           
          t          t                                         |||||           t          |                    dg                     t          |                    dg                     z   }|                    d          }|                    dg           s|                    d          }t          |          }|                    d          }|                    d          }	|                    d          }
|
rJ|dz  d	k    sJ d
|f            |dz  }t                              dg|z  t          j        d           _	        t          j
        j                            t          t          j        |j                            fd          }|}d }d}|d d         D ]W}t          j
        j                            |d                    |          |t'          d                    |          }|dz  }X|r@|r>t          j
        j                            |d|t'          d                    |          }nt)          |          d	k    rVt          j
        j                            |d         d                    |          |t'          d                    |          }|r>t          j
        j                            |dd t'          d                    |          }n=t          t          j        |j                            g|dd          z   d          _        |
rb|` fd}t          j
        j                            |          |          }t          j
        j                            d          ||g          }d }|	s^|}d}|D ]W}t          j
        j                            |d                    |          |t'          d                    |          }|dz  }Xt          j
        j                            ddd t'          d                    ||n|          }t          j
                            |||n||g           _        d S )Nfcnet_hiddenspost_fcnet_hiddensfcnet_activationpost_fcnet_activationno_final_linearvf_share_layersfree_log_std   r   z$num_outputs must be divisible by twog        log_std)dtyper   observations)shaper      zfc_{}g      ?)r   
activationkernel_initializerfc_outg{Gz?c                     t                               t                               j        d          t                               |           d         dg          S )Nr   r    )tftileexpand_dimslog_std_varr   )xselfs    m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/rllib/models/tf/fcnet.pytiled_log_stdz5FullyConnectedNetwork.__init__.<locals>.tiled_log_stdl   s=    wwr~~d.>BBRXXa[[QR^UVDWXXX    )axiszfc_value_{}	value_out)superr   __init__listgetr   r&   Variablefloat32r)   keraslayersInputintnpprodr   Denseformatr   lenr   LambdaConcatenateModel
base_model)r+   r   r   r   r   r   hiddensr"   r   r   r   inputs
last_layer
logits_outisizer-   log_std_outlast_vf_layerr0   	__class__s   `                   r,   r2   zFullyConnectedNetwork.__init__   s    	#T**33|[,	
 	
 	
 |''<<==1266A
 A
 
 "%%&899
44 	C%))*ABBJ&z22
&**+<==&**+<==#''77  	?a'''6*''' &*K!{{#2:I  +    D
 &&rwy//002 ' 
 
 

 CRCL 	 	D..^^A&&%#4S#9#9	 /  
  J FAA  	X{ 	X..%#4S#9#9	 /  
  JJ 7||aX_22BK **)'8'='=	 3  
  
  	XX_22!#'8'>'>	 3  
  

 &))A)A%B%B$Cgbccl$RTV#W   	XJ2Y Y Y Y Y (/00??GGK44!4<<j+=VWWJ 	"MA   " 5 5&--a00)'8'='=	 !6 ! !
  !! !! QHO))066	 * 
 

 )4--*F F	 (..J$:jj
YW
 
r.   
input_dictstateseq_lensreturnc                 P    |                      |d                   \  }| _        ||fS )Nobs_flat)rC   
_value_out)r+   rM   rN   rO   	model_outs        r,   forwardzFullyConnectedNetwork.forward   s,     &*__Z
5K%L%L"	4?%r.   c                 D    t                               | j        dg          S )Nr!   )r&   reshaperS   )r+   s    r,   value_functionz$FullyConnectedNetwork.value_function   s    zz$/B4000r.   )__name__
__module____qualname____doc__gymspacesSpacer:   r
   strr2   r   r   r	   rU   rX   __classcell__)rL   s   @r,   r   r      s        EEu
:#u
 j&u
 	u

 &u
 u
 u
 u
 u
 u
 u
n j)  J  	 
 d:&	'       1
 1 1 1 1 1 1 1 1r.   r   )typingr   	gymnasiumr]   numpyr;   ray.rllib.models.tf.miscr   ray.rllib.models.tf.tf_modelv2r   ray.rllib.models.utilsr   ray.rllib.utils.annotationsr   ray.rllib.utils.frameworkr   ray.rllib.utils.typingr	   r
   r   tf1r&   tfvr    r.   r,   <module>rn      s                 6 6 6 6 6 6 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 D D D D D D D D D D}R D1 D1 D1 D1 D1I D1 D1 D1 D1 D1r.   