o
    i                     @   s  d dl mZmZ d dlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ded	e
d
e	fddZedd
ee
ge	f fddZded	e
d
e	fddZedd
ee
ge	f fddZded	e
d
e	fddZedd
ee
ge	f fddZded	e
d
e	fddZedd
ee
ge	f fddZded	e
d
e	fdd Zed!d
ee
ge	f fd"d#Zded	e
d
e	fd$d%Zed&d
ee
ge	f fd'd(Zded	e
d
e	fd)d*Zed+d
ee	ge	f fd,d-Zd.d/d0ded	e
d1ed2ed
e	f
d3d4Zed5d.d/d0d1ed2ed
ee	ge	f fd6d7Zd d8ded	e
d9ed
e	fd:d;Zed<d d8d9ed
ee	ge	f fd=d>Z g d?Z!dS )@    )CallablecastN   )Ops)registry)FloatsXdShape)partialopsshapereturnc              	   C   .   t d|d  }| ttt jd||S )Ng      ?r   r   numpysqrt	asarray_fr   r   randomnormalr
   r   scale r   F/home/ubuntu/.local/lib/python3.10/site-packages/thinc/initializers.pylecun_normal_init      r   zlecun_normal_init.v1c                   C      t tS N)r	   r   r   r   r   r   configure_lecun_normal_init      r   c              	   C   r   Ng       @r   r   r   r   r   r   r   he_normal_init   r   r   zhe_normal_init.v1c                   C   r   r   )r	   r   r   r   r   r   configure_he_normal_init!   r   r    c              	   C   s6   t d|d |d   }| ttt jd||S r   r   r   r   r   r   glorot_normal_init&   s   r!   zglorot_normal_init.v1c                   C   r   r   )r	   r!   r   r   r   r   configure_glorot_normal_init+   r   r"   c              	   C   0   t d|d  }| ttt j| ||S )N      @r   r   r   r   r   r   r   uniformr   r   r   r   he_uniform_init0      r'   zhe_uniform_init.v1c                   C   r   r   )r	   r'   r   r   r   r   configure_he_uniform_init5   r   r)   c              	   C   r#   )Ng      @r   r%   r   r   r   r   lecun_uniform_init:   r(   r*   zlecun_uniform_init.v1c                   C   r   r   )r	   r*   r   r   r   r   configure_lecun_uniform_init?   r   r+   c              	   C   s8   t d|d |d   }| ttt j| ||S )Nr$   r   r   r%   r   r   r   r   glorot_uniform_initD   s   r,   zglorot_uniform_init.v1c                   C   r   r   )r	   r,   r   r   r   r   configure_glorot_uniform_initI   r   r-   c                 C   s
   |  |S r   )alloc_f)r
   r   r   r   r   	zero_initN   s   
r/   zzero_init.v1c                   C   r   r   )r	   r/   r   r   r   r   configure_zero_initR   r   r0   gg?lohir2   r3   c                C   s&   t j|||}| tt|dS )Nfloat32)r   r   r&   r   r   r   astype)r
   r   r2   r3   valuesr   r   r   uniform_initW   s   r7   zuniform_init.v1c                 C   s   t t| |dS )Nr1   )r	   r7   r1   r   r   r   configure_uniform_init^   s   r8   meanr:   c                C   sJ   t | j| j|}tttjj||d	d}| 
||}| |S )N)r   sizer4   )intxpprodasarrayr   r   r   r   r   r5   	reshape_fr   )r
   r   r:   r;   initsr   r   r   normal_inite   s   
rB   znormal_init.v1c                 C   s   t t| dS )Nr9   )r	   rB   r9   r   r   r   configure_normal_initl   s   rC   )	rB   r7   r,   r/   r*   r'   r!   r   r   )"typingr   r   r   backendsr   configr   typesr   r   utilr	   r   initializersr   r   r    r!   r"   r'   r)   r*   r+   r,   r-   r/   r0   floatr7   r8   rB   rC   __all__r   r   r   r   <module>   sh    

 $