o
    i                     @   s   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d Zejd	g d
dd Zdd ZdS )    N)fmin_ncg)ConvergenceWarning)Bunch)assert_allclose)_check_optimize_result
_newton_cgc                    s   t j| }|jdd t d} fdd} fdd fdd	} fd
d}t t t|||ddd dks?J tt|||ddd t	|||ddd d S )N)
   r   )sizer   c                    s     | }d| | S Ng      ?)dot)xZAxA p/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/utils/tests/test_optimize.pyfunc   s   
ztest_newton_cg.<locals>.funcc                        j  | S NTr   r   r   r   r   grad   s   ztest_newton_cg.<locals>.gradc                    s   |  j   |  S r   )r   r   all)r   pr   r   r   hess   s   ztest_newton_cg.<locals>.hessc                    s   |  fddfS )Nc                    r   r   r   r   r   r   r   <lambda>   s    z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>r   r   r   r   r   r   	grad_hess   s   z!test_newton_cg.<locals>.grad_hessg|=)Ztolr   gHz>)fx0ZfprimeZfhess_pgh㈵>)Zatol)
nprandomZRandomStatenormalZonesr   absr   r   r   )Zglobal_random_seedrngr   r   r   r   r   r   r   test_newton_cg   s   
*
r%   verbose)r         c              
      s  t d t jddgtdt fdd fdd fddt  jd |d	 |  }|dkr<|jd
ks;J ng d}|D ]	}||jv sKJ qB|dkr`g d}|D ]	}||jv s_J qV|dkrt ddgddggd  t ddgt	
t% t fdd fdd fddt ddg|d	 W d   n1 sw   Y  |  }g d}|D ]	}||jv sJ qt ddgddgg t ddgt	
t! t fdd fdd fdd|dd W d   n1 sw   Y  |  }dg}|D ]}||jv sJ qt d t ddgt	
t& t fdd fdd fddt ddg|d d W d   n	1 sOw   Y  |  }d!g}|D ]}||jv sgJ q]t g d" t g d#t	
t% t fd$d fd%d fd&dt |ddd' W d   n	1 sw   Y  |  }d(g}|D ]}||jv sJ qdS dS ))z0Test the std output of verbose newton_cg solver.r(   r'   )Zdtypec                        |    fddfS )Nc                        |  S r   r   zr   r   r   r   2       <test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>r   r   r   br   r   r   2       z*test_newton_cg_verbosity.<locals>.<lambda>c                       d|    |  |   S r
   r   r   r/   r   r   r   3   r1   c                        |   S r   r   r   r/   r   r   r   4       r   )r   r   r   r   r&    )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                    r)   )Nc                    r*   r   r   r+   r   r   r   r   Z   r-   r.   r   r   r/   r   r   r   Z   r1   c                    r2   r
   r   r   r/   r   r   r   [   r1   c                    r3   r   r   r   r/   r   r   r   \   r4          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                    r)   )Nc                    r*   r   r   r+   r   r   r   r   p   r-   r.   r   r   r/   r   r   r   p   r1   c                    r2   r
   r   r   r/   r   r   r   q   r1   c                    r3   r   r   r   r/   r   r   r   r   r4   )r   r   r   r   r&   maxiterztiny_|p| = eps * ||p||^2c                    r)   )Nc                    s
     |  S r   r   r+   r   r   r   r      s   
 r.   r   r   r/   r   r   r      r1   c                    r2   r
   r   r   r/   r   r   r      r1   c                    r3   r   r   r   r/   r   r   r      r4      z9Inner CG solver iteration 0 fell back to steepest descent)gMbP?r'   g     @@)r8   r'   r7   c                    r)   )Nc                    r*   r   r   r+   r   r   r   r      r-   r.   r   r   r/   r   r   r      r1   c                    r2   r
   r   r   r/   r   r   r      r1   c                    r3   r   r   r   r/   r   r   r      r4   )r   r   r   r   r&   r9   Zmaxinnerz*Inner CG solver stopped reaching maxiter=1)r    eyearrayfloatr   ZzerosshapeZ
readouterroutpytestwarnsRuntimeWarningr   ZdiagZ	ones_like)Zcapsysr&   Zcapturedmsgmr   r/   r   test_newton_cg_verbosity+   s   

	


SrE   c                  C   s  t  } d| _d| _d| _t  td td|  W d    n1 s%w   Y  d| _d| _t	t
}td|  W d    n1 sEw   Y  t|dksRJ |d jjd }d|v s`J | j|v sgJ d|vsmJ d	|v ssJ t	t
}td| dd
 W d    n1 sw   Y  t|dksJ |d jjd }d|v sJ | j|v sJ d|v sJ d	|v sJ d| _d| _d| _t	t
}td| dd
 W d    n1 sw   Y  t|dksJ |d jjd }d|v sJ | j|v sJ d|vsJ d	|v sJ d S )Nr'   r   OKerrorZ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)Zmax_iterr(   ZABNORMALr   z-lbfgs failed to converge after 2 iteration(s))r   nitstatusmessagewarningscatch_warningssimplefilterr   r@   rA   r   lenargs)resultrecordZwarn_msgr   r   r   test_check_optimize   sP   

rR   )rK   numpyr    r@   Zscipy.optimizer   Zsklearn.exceptionsr   Zsklearn.utils._bunchr   Zsklearn.utils._testingr   Zsklearn.utils.optimizer   r   r%   markZparametrizerE   rR   r   r   r   r   <module>   s    
|