
    &`i$                        d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ d Zdej        fdZed	k    r e j                    Ze                    d
dd           e                                \  ZZ eddd g dd          Z G d dej                  Z e            Z ej        e ej         ded ej!        dd                     ej"        edddd           ej#        dd           ej#        dd          d           Z$e$%                                Z& ee&           dS dS )!    N)tune)
Checkpoint)ConvNetget_data_loaders	test_func)PopulationBasedTrainingc                    d}t                      \  }}t                      }t          j        |                                |                     dd          |                     dd                    }t          j                    rt          d           t          j                    }|	                                5 }t          j                            |d          }t          j        |          }	|                    |	d	                    |	d
         }d d d            n# 1 swxY w Y   	 t           j        j        j                            |||           t)          ||          }
d }	|dz  dk    rTt          j        dd           t          j        ||                                dd           t1          j        d          }	|dz  }t          j        d|
i|	           )Nr   lrg{Gz?momentum?r
   r   zLoading from checkpoint.checkpoint.ptmodelstepT   my_model)exist_ok)r   r   zmy_model/checkpoint.pt   mean_accuracy)
checkpoint)r   r   optimSGD
parametersgetr   get_checkpointprintas_directoryospathjointorchloadload_state_dictrayexamplesmnist_pytorch
train_funcr   makedirssave
state_dictr   from_directoryreport)configr   train_loadertest_loaderr   	optimizerloaded_checkpointloaded_checkpoint_dirr   r   accs              /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/examples/pbt_convnet_function_example.pytrain_convnetr5      s   D 0 2 2L+IIE	::dD!!J,,  I  &())) /11++-- 	&1F7<< 5GGDD))J!!*W"5666f%D		& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&C'225)\RRR{++
!8q==
 K
T2222J "--//  )   $2:>>J	_c*zBBBB)Cs   <AD  D$'D$resultsc                    |                                  j                                        5 }t                      }t	          j        t          j                            |d                    }|	                    |d                    t          |t                      d                   }t          d|           ddd           dS # 1 swxY w Y   dS )z0Test the best model given output of tuner.fit().r   r   r   zbest model accuracy: N)get_best_resultr   r   r   r!   r"   r   r   r    r#   r   r   r   )r6   best_checkpoint_path
best_modelbest_checkpointtest_accs        r4   eval_best_modelr=   E   s    		 	 	"	"	-	:	:	<	< 	1@TYY
*GLL-??
 
 	""?7#;<<< Z)9););A)>??%x000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   BCCC__main__z--smoke-test
store_truezFinish quickly for testing)actionhelptraining_iterationr   c                  B    t           j                            dd          S )Ng-C6?r   )nprandomuniform     r4   <lambda>rI   `   s    ")++FA66 rH   )g?r   gGz?r   )	time_attrperturbation_intervalhyperparam_mutationsc                        e Zd Zd Zd Zd ZdS )CustomStopperc                     d| _         d S )NFshould_stopselfs    r4   __init__zCustomStopper.__init__j   s    $DrH   c                 |    t           j        rdnd}| j        s|d         dk    rd| _        | j        p|d         |k    S )Nr   d   r   gQ?TrB   )args
smoke_testrQ   )rS   trial_idresultmax_iters       r4   __call__zCustomStopper.__call__m   sM     O4qqH# ((?$(F(F#' #Ov.B'Cx'OOrH   c                     | j         S )NrP   rR   s    r4   stop_allzCustomStopper.stop_alls   s    ##rH   N)__name__
__module____qualname__rT   r\   r^   rG   rH   r4   rN   rN   i   sD        	% 	% 	%	P 	P 	P	$ 	$ 	$ 	$ 	$rH   rN   pbt_testr   r      )checkpoint_score_attributenum_to_keep)namestopverbosecheckpoint_configmaxT)	schedulermetricmodenum_samplesreuse_actorsgMbP?)
run_configtune_configparam_space)'argparser   numpyrD   r!   torch.optimr   r$   r   ray.tuner   ray.tune.examples.mnist_pytorchr   r   r   ray.tune.schedulersr   r5   
ResultGridr=   r_   ArgumentParserparseradd_argumentparse_known_argsrW   _rk   StopperrN   stopperTuner	RunConfigCheckpointConfig
TuneConfigrF   tunerfitr6   rG   rH   r4   <module>r      su    				            



             P P P P P P P P P P 7 7 7 7 7 7*C *C *C`1T_ 1 1 1 1 z$X$&&F
|2N     %%''GD! ('& 76(((	
 
	 	 	I$ $ $ $ $ $ $ $ mooGDJ!4>3d3+:  	
 
 
 $DO"
 
 
 $,ua(($UA..
 
%  E. iikkG OG rH   