Ë
    êÿæi³  ã                   ó°   — d dl 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mZ d„ Zej                   j#                  dg d	¢«      d
„ «       Zd„ Zy)é    N)Úfmin_ncg)ÚConvergenceWarning)ÚBunch)Úassert_allclose)Ú_check_optimize_resultÚ
_newton_cgc                 ó’  ‡‡— t         j                  j                  | «      }|j                  d¬«      Št        j                  d«      }ˆfd„}ˆfd„Šˆfd„}ˆˆfd„}t        j
                  t        j                  t        ||‰|d¬	«      d
   «      dk  «      sJ ‚t        t        ||‰|d¬	«      d
   t        ||‰|¬«      d¬«       y )N)é
   r
   )Úsizer
   c                 óN   •— ‰j                  | «      }d|j                  |«      z  S ©Ng      à?)Údot)ÚxÚAxÚAs     €úv/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/utils/tests/test_optimize.pyÚfuncztest_newton_cg.<locals>.func   s#   ø€ Ø�U‰U�1‹XˆØ�b—X‘X˜b“\Ñ!Ð!ó    c                 óX   •— ‰j                   j                  ‰j                  | «      «      S ©N©ÚTr   ©r   r   s    €r   Úgradztest_newton_cg.<locals>.grad   s   ø€ Ø�s‰s�w‰w�q—u‘u˜Q“xÓ Ð r   c                 ó’   •— |j                  ‰j                  j                  ‰j                  | j                  «       «      «      «      S r   )r   r   Úall)r   Úpr   s     €r   Úhessztest_newton_cg.<locals>.hess   s-   ø€ Ø�u‰u�Q—S‘S—W‘W˜QŸU™U 1§5¡5£7›^Ó,Ó-Ð-r   c                 ó   •—  ‰| «      ˆfd„fS )Nc                 óX   •— ‰j                   j                  ‰j                  | «      «      S r   r   r   s    €r   Ú<lambda>z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>   s   ø€  !§#¡#§'¡'¨!¯%©%°«(Ô"3r   © )r   r   r   s    €€r   Ú	grad_hessz!test_newton_cg.<locals>.grad_hess   s   ø€ Ù�A‹wÓ3Ð3Ð3r   g»½×Ùß|Û=)Útolr   gH¯¼šò×z>)ÚfÚx0ÚfprimeÚfhess_pgñhãˆµøä>)Úatol)
ÚnpÚrandomÚRandomStateÚnormalÚonesr   Úabsr   r   r   )Úglobal_random_seedÚrngr&   r   r   r#   r   r   s         @@r   Útest_newton_cgr2      s®   ù€ ô �)‰)×
Ñ
Ð 2Ó
3€CØ�
‰
˜ˆ
Ó!€AÜ	�‰�‹€Bô"ô!ô.õ4ô
 �6‰6”"—&‘&œ I¨t°T¸2À5ÔIÈ!ÑLÓMÐQUÑUÔVÐVÐVÜÜ�9˜d D¨"°$Ô7¸Ñ:Ü�4˜B t°TÔ:Øör   Úverbose)r   é   é   c           
      ó^  ‡‡— t        j                  d«      Št        j                  ddgt        ¬«      Št	        ˆˆfd„ˆˆfd„ˆˆfd„t        j
                  ‰j                  d   «      |¬«       | j                  «       }|dk(  r|j                  d	k(  sJ ‚g d
¢}|D ]  }||j                  v rŒJ ‚ |dk\  rg d¢}|D ]  }||j                  v rŒJ ‚ |dk\  �r¤t        j                  ddgddgg«      dz  Št        j                  ddg«      Št        j                  t        «      5  t	        ˆˆfd„ˆˆfd„ˆˆfd„t        j                  ddg«      |¬«       ddd«       | j                  «       }g d¢}|D ]  }||j                  v rŒJ ‚ t        j                  ddgddgg«      Št        j                  ddg«      Št        j                  t        «      5  t	        ˆˆfd„ˆˆfd„ˆˆfd„‰|d¬«       ddd«       | j                  «       }dg}|D ]  }||j                  v rŒJ ‚ t        j                  d«      Št        j                  ddg«      Št        j                  t        «      5  t	        ˆˆfd„ˆˆfd„ˆˆfd„t        j                  ddg«      |d¬«       ddd«       | j                  «       }d g}|D ]  }||j                  v rŒJ ‚ t        j                  g d!¢«      Št        j                  g d"¢«      Št        j                  t        «      5  t	        ˆˆfd#„ˆˆfd$„ˆˆfd%„t        j                  ‰«      |dd¬&«       ddd«       | j                  «       }d'g}|D ]  }||j                  v rŒJ ‚ yy# 1 sw Y   �Œ'xY w# 1 sw Y   �Œ˜xY w# 1 sw Y   ŒúxY w# 1 sw Y   Œ[xY w)(z0Test the std output of verbose newton_cg solver.r5   r4   )Údtypec                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r"   ©Úzr   s    €r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>2   s	   ø€ °!°a²%r   r"   ©r   r   Úbs    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>2   s   ø€ ˜Q ™U Q™Y«Ñ8r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>3   s   ø€ �s˜Q‘w ‘{ Q‘¨¨Q©Ò.r   c                 ó   •— ‰| z  ‰z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>4   s   ø€ �q˜1‘u˜q’yr   r   )r#   r   r   r&   r3   Ú )zNewton-CG iter = 1zCheck Convergencezmax |gradient|zSolver did converge at loss = )z(Inner CG solver iteration 1 stopped withzsum(|residuals|) <= tolzLine Searchztry line search wolfe1z!wolfe1 line search was successfulg      ð?é   gêŒ 9Y>)Fç       @c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r"   r:   s    €r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>Z   ó	   ø€ ¸!¸aº%r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>Z   ó   ø€  Q¨¡U¨Q¡Y³Ñ$@r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>[   ó   ø€ ˜s Q™w¨™{¨Q™°°Q±Ò6r   c                 ó   •— ‰| z  ‰z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>\   ó   ø€ ˜q 1™u qšyr   ç       ÀN)z%wolfe1 line search was not successfulz-check loss |improvement| <= eps * |loss_old|:z,check sum(|gradient|) < sum(|gradient_old|):z#last resort: try line search wolfe2g      @c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r"   r:   s    €r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>p   rE   r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>p   rF   r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>q   rH   r   c                 ó   •— ‰| z  ‰z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>r   rJ   r   )r#   r   r   r&   r3   Úmaxiterztiny_|p| = eps * ||p||^2c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰ | z  S r   r"   r:   s    €r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>†   s   ø€ ¸1¸"¸qº&r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>†   s   ø€  Q¨¡U¨Q¡YÓ0@Ñ$Ar   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>‡   rH   r   c                 ó   •— ‰| z  ‰z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>ˆ   rJ   r   é   z9Inner CG solver iteration 0 fell back to steepest descent)gü©ñÒMbP?r4   g     @�@)rK   r4   rB   c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r"   r:   s    €r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>˜   rE   r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>˜   rF   r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>™   rH   r   c                 ó   •— ‰| z  ‰z
  S r   r"   r<   s    €€r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>š   rJ   r   )r#   r   r   r&   r3   rP   Úmaxinnerz*Inner CG solver stopped reaching maxiter=1)r*   ÚeyeÚarrayÚfloatr   ÚzerosÚshapeÚ
readouterrÚoutÚpytestÚwarnsÚRuntimeWarningr   ÚdiagÚ	ones_like)Úcapsysr3   ÚcapturedÚmsgÚmr   r=   s        @@r   Útest_newton_cg_verbosityrk   +   sN  ù€ ô 	�‰ˆq‹	€AÜ
�‰�!�Q�œuÔ%€AäÜ8Ü.Ü Ü�8‰8�A—G‘G˜A‘JÓØõð × Ñ Ó"€Hà�!‚|Ø�|‰|˜rÒ!Ð!Ð!ò
ˆó ˆAØ˜Ÿ™Ò$Ð$Ð$ð ð �!‚|ò
ˆó ˆAØ˜Ÿ™Ò$Ð$Ð$ð ð �!ƒ|ô �H‰H�s˜A�h  A Ð'Ó(¨4Ñ/ˆÜ�H‰H�c˜3�ZÓ ˆô �\‰\œ.Õ)ÜÜ@Ü6Ü(Ü—8‘8˜T 1˜IÓ&Øõ÷ *ð ×$Ñ$Ó&ˆò
ˆó ˆAØ˜Ÿ™Ò$Ð$Ð$ð ô
 �H‰H�s˜A�h  I Ð/Ó0ˆÜ�H‰H�d˜A�YÓˆÜ�\‰\Ô,Õ-ÜÜ@Ü6Ü(ØØØõ÷ .ð ×$Ñ$Ó&ˆà&ð
ˆó ˆAØ˜Ÿ™Ò$Ð$Ð$ð ô �F‰F�1‹IˆÜ�H‰H�d˜A�YÓˆÜ�\‰\œ.Õ)ÜäAÜ6Ü(Ü—8‘8˜S #˜JÓ'ØØõ÷ *ð ×$Ñ$Ó&ˆàGð
ˆó ˆAØ˜Ÿ™Ò$Ð$Ð$ð ô �G‰G’NÓ#ˆÜ�H‰H’^Ó$ˆÜ�\‰\Ô,Õ-ÜÜ@Ü6Ü(Ü—<‘< “?ØØØõ÷ .ð ×$Ñ$Ó&ˆà8ð
ˆó ˆAØ˜Ÿ™Ò$Ð$Ð$ñ ðg ÷ *Ñ)ú÷, .Ñ-ú÷* *Ð)ú÷& .Ð-ús0   Ä&2M=ÇN
É+3NÌ2N#Í=NÎ
NÎN Î#N,c                  óZ  — t        «       } d| _        d| _        d| _        t	        j
                  «       5  t	        j                  d«       t        d| «       d d d «       d| _        d| _        t        j                  t        «      5 }t        d| «       d d d «       t        «      dk(  sJ ‚|d   j                  j                  d   }d|v sJ ‚| j                  |v sJ ‚d|vsJ ‚d	|v sJ ‚t        j                  t        «      5 }t        d| d¬
«       d d d «       t        |«      dk(  sJ ‚|d   j                  j                  d   }d|v sJ ‚| j                  |v sJ ‚d|v sJ ‚d	|v sJ ‚d| _        d| _        d| _        t        j                  t        «      5 }t        d| d¬
«       d d d «       t        |«      dk(  sJ ‚|d   j                  j                  d   }d|v sJ ‚| j                  |v sJ ‚d|vsJ ‚d	|v sJ ‚y # 1 sw Y   �Œ¦xY w# 1 sw Y   �ŒwxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒxY w)Nr4   r   ÚOKÚerrorÚlbfgsz+STOP: TOTAL NO. OF ITERATIONS REACHED LIMITz-lbfgs failed to converge after 1 iteration(s)z!Increase the number of iterationszscale the data)Úmax_iterr5   ÚABNORMALr
   z-lbfgs failed to converge after 2 iteration(s))r   ÚnitÚstatusÚmessageÚwarningsÚcatch_warningsÚsimplefilterr   rb   rc   r   ÚlenÚargs)ÚresultÚrecordÚwarn_msgs      r   Útest_check_optimizer}   ¨   s3  € ä‹W€Fð €F„JØ€F„MØ€F„Nä	×	 Ñ	 Õ	"Ü×Ñ˜gÔ&Ü˜w¨Ô/÷ 
#ð €F„MØB€F„NÜ	�‰Ô(Ô	)¨VÜ˜w¨Ô/÷ 
*ô ˆv‹;˜!ÒÐÐØ�a‰y× Ñ ×%Ñ% aÑ(€HØ:¸hÑFÐFÐFØ�>‰>˜XÑ%Ð%Ð%Ø.°hÑ>Ð>Ð>Ø˜xÑ'Ð'Ð'ô 
�‰Ô(Ô	)¨VÜ˜w¨¸Õ;÷ 
*ô ˆv‹;˜!ÒÐÐØ�a‰y× Ñ ×%Ñ% aÑ(€HØ:¸hÑFÐFÐFØ�>‰>˜XÑ%Ð%Ð%Ø.°(Ñ:Ð:Ð:Ø˜xÑ'Ð'Ð'ð €F„JØ€F„MØ€F„NÜ	�‰Ô(Ô	)¨VÜ˜w¨¸Õ<÷ 
*ô ˆv‹;˜!ÒÐÐØ�a‰y× Ñ ×%Ñ% aÑ(€HØ:¸hÑFÐFÐFØ�>‰>˜XÑ%Ð%Ð%Ø.°hÑ>Ð>Ð>Ø˜xÑ'Ð'Ñ'÷W 
#Ñ	"ú÷ 
*Ñ	)ú÷ 
*Ñ	)ú÷ 
*Ð	)ús/   ´"G:ÂHÄHÆH!Ç:HÈHÈHÈ!H*)ru   Únumpyr*   rb   Úscipy.optimizer   Úsklearn.exceptionsr   Úsklearn.utils._bunchr   Úsklearn.utils._testingr   Úsklearn.utils.optimizer   r   r2   ÚmarkÚparametrizerk   r}   r"   r   r   Ú<module>r†      sO   ðÛ ã Û Ý #å 1Ý &Ý 2ß Eòð< ‡�×Ñ˜¢IÓ.ñy%ó /ðy%óx4(r   