o
    `۷ib
                     @   s  d dl mZmZmZ d dlZd dlmZ d dlm	Z	 d dl
mZ e	 \ZZZed dedefd	d
Ze					d!dedededeeef deeef dedee dee defddZe		d"dedededee dedefddZededefddZdS )#    )AnyOptionalTupleN)DeveloperAPI)try_import_tf)
TensorType      ?stdreturnc                    s   d fdd	}|S )Nc                    sT   t jj|  t|dr|jn|pt j}| t t |j	ddd 9 }t
|S )Nnamer   T)axiskeepdims)nprandomrandnastypehasattrr   float32sqrtsquaresumtfconstant)shapedtypepartition_infooutr	    N/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/rllib/models/tf/misc.py_initializer   s
   "
z'normc_initializer.<locals>._initializer)NNr   )r	   r    r   r   r   normc_initializer   s   r!      r#      r%   SAMExnum_filtersr   filter_sizestridepadr   collectionsc              	   C   s   |d u rt j}t|i d|d |d dg}|d |d t|  d |g}	t|	d d }
t|	d d | }td|
|  }tj	d|	|t
| ||d}tj	dddd|gtd	|d
}tj| |||| W  d    S 1 sxw   Y  d S )Nr%   r   r#         W)r,   b        )initializerr,   )r   r   tf1variable_scopeint	get_shaper   prodr   get_variablerandom_uniform_initializerconstant_initializernnconv2d)r'   r(   r   r)   r*   r+   r   r,   stride_shapefilter_shapefan_infan_outw_boundwr0   r   r   r   r<      s6   	
$r<   r1   sizer2   	bias_initc                 C   sL   t j|d |  d |g|d}t j|d |gt |d}t| || S )Nz/wr%   )r2   z/b)r3   r8   r6   r:   r   matmul)r'   rC   r   r2   rD   rB   r0   r   r   r   linearJ   s
    rF   c              	   C   s&   t | dt|   dd  gS )Nr%   )r   reshaper   r7   r6   as_list)r'   r   r   r   flattenY   s   &rJ   )r   )r"   r$   r&   NN)Nr1   )typingr   r   r   numpyr   ray.rllib.utils.annotationsr   ray.rllib.utils.frameworkr   ray.rllib.utils.typingr   r3   r   tfvfloatr!   r5   strr<   rF   rJ   r   r   r   r   <module>   sf    

	0