U C^H@sDddlmZddlZddlmZddZeZddZ d d d Z dS) )unicode_literalsN) copy_arraycCspt|dkrtd|dt|ddf}tj|}tjj|dd\}}}|j|kr^|n|}| |}|S)Nz.Only shapes of length 2 or more are supported.rrF)Z full_matrices) len RuntimeErrornpprodrandomZstandard_normalZlinalgZsvdshapeZreshape)r Z flat_shapeau_vqr5/tmp/pip-install-6_kvzl1k/thinc/thinc/neural/_lsuv.pysvd_orthonormal s   rc Cst|tkrdStt|t|t|j|j|}d}d}d}||}t |} t | d|ks||krrq||j | }|d7}qF||S)Ng? rg?r) id _initializedaddrrr ZxpZascontiguousarrayrvarabssqrt) opsweightsZpredictXZX_copyZtol_varZt_maxZt_iZacts1rrrrdo_lsuvs    rcCsb|jdkr|jd}|jdkr"dSt|dr6|js6dS|jtkrDdSt|jt|j|j ||S)NZ batchnormrZsoftmaxlsuv) nameZ_layershasattrrrrrrrW)modelryrrrLSUVinit.s     r%)N) __future__rZnumpyrutilrrsetrrr%rrrrs