
    i                         d dl Z d dlZd dlZd dlmZmZmZmZ ej                  d        Z	ej                  d        Z
d Zd Zd Zy)    N)SGDSparseLinearSparseLinear_v2to_categoricalc                      t        j                  ddgd      } t        j                  dd      }t        j                  dd      }||| f}t        j                  dd	gd      }|t	        |d
      fS )N      int32dtype	   uint64float32r         )	n_classes)numpyasarrayarangeonesr   )lengthskeysvaluesXys        v/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/tests/layers/test_sparse_linear.py	instancesr   	   sh    mmQF'2G<<*DZZ+F	vwAq!fG,AnQ!,,,    c                      t        d      S )NgMbP?)r    r   r   sgdr!      s    u:r   c                 2   | \  }}d}t        |      j                         }|j                  |      \  }}||z
  dz  j                         } |||z
         |j	                  |       |j                  |      \  }}||z
  dz  j                         }	|	|k  sJ y )Nr   r   )r   
initializebegin_updatesumfinish_update)
r   r!   r   r   nr_classmodelyhbackproploss1loss2s
             r   
test_basicr-      s    DAqH"--/E%%a(LB1f]!ER!V	%%a(LB1f]!E5==r   c                  T   t        d      j                         } t        j                  dd      }t        j                  dd      }t        j                  dd      }d|d<   d	|d
<   | j                  |||f      \  }}|j                  dk(  sJ  ||      }t        |      dk(  sJ y )Nr   )r   r   r   fr   r
   r   r      )r   r   )r   r#   r   r   zerosr$   shapelen)r(   r   r   r   scoresr*   d_featss          r   	test_initr7   %   s    O&&(E::d(+DZZC(Fkk$g.GGAJGAJ))4*ABFH<<6!!!vGw<1r   c                  \   d} d}t        | |      j                         }t        j                  t        j                        }t        j
                  dd      }t        dd      D ]C  }|j                  d	d
       d|z  }t        j                  j                  |j                  |j                  |ft        j                        }t        j                  |fd      }|dz  |d<   |dz  |d<   dt        j                  d|z  |z        z
  }|j                  |||f      \  }	}
 |
t        j                   |	             |j#                  d	      j%                  | d      }t        j&                  |d      |j(                  d   z  }t        j*                  j-                  ||dd       F y )N
   i   )nOlengthr0   r
   r   r1      Wg        r   )sizer   r/   r   )axisg-C6?)rtolatol)r   r#   r   iinfor   r2   rangeset_gradrandomrandintminmaxr   mathexpr$   	ones_likeget_gradreshapecount_nonzeror3   testingassert_allclose)n_classr;   r(   ii64r   	p_nonzeronr   r   Yr*   dWnonzero_empiricals                r   test_distributionrZ   2   sl   GFwv6AACE;;u||$Dkk$g.G1b\ 
	sC yL||##DHHdhhaT#VQD,!V
!V
 a&11	(($)@A8#$ ^^C (("5!//;bhhqkI%%yt$ 	& 	
'
r   )rK   r   pytest	thinc.apir   r   r   r   fixturer   r!   r-   r7   rZ   r    r   r   <module>r^      sS       H H - -  


r   