
    &`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mc mZ d dl	m
Z
 d dlmZ d dlmZmZ d dlZd dlmZ d dlmZ d dlmZ dZdZ G d	 d
ej                  Zd1dZd1dZd2dZd Zedk    rL e j        d          Z e !                    dddd           e !                    ddd           e "                                \  Z#Z$ ej%        e#j&        rdnd            e            Z'd e(e#j)                  dZ* ej+         ej,        ee*           ej-        dd e'e#j&        rd!nd"#           ej.        d$d%e#j&        rd&nd'd()           ej/        d*d+           ej0        d,d-          d./          Z1e12                                Z3 e4d0e35                                j6                   e3j7        rJ dS dS )3    N)FileLock)datasets
transforms)tune)
Checkpoint)AsyncHyperBandScheduleri      c                   $     e Zd Z fdZd Z xZS )ConvNetc                     t          t          |                                            t          j        ddd          | _        t          j        dd          | _        d S )N      )kernel_size   
   )superr   __init__nnConv2dconv1Linearfc)self	__class__s    s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/examples/mnist_pytorch.pyr   zConvNet.__init__   sN    gt%%'''Yq!333
)C$$    c                     t          j        t          j        |                     |          d                    }|                    dd          }|                     |          }t          j        |d          S )Nr   r   r   )dim)Frelu
max_pool2dr   viewr   log_softmax)r   xs     r   forwardzConvNet.forward   s\    F1<

1q1122FF2sOOGGAJJ}QA&&&&r   )__name__
__module____qualname__r   r&   __classcell__)r   s   @r   r   r      sG        % % % % %
' ' ' ' ' ' 'r   r   c                    |pt          j        d          }|                                  t          |          D ]\  }\  }}|t	          |          z  t
          k    r d S |                    |          |                    |          }}|                                  | |          }t          j	        ||          }|
                                 |                                 d S )Ncpu)torchdevicetrain	enumeratelen
EPOCH_SIZEto	zero_gradr    nll_lossbackwardstep)	model	optimizertrain_loaderr.   	batch_idxdatatargetoutputlosss	            r   
train_funcr@   &   s    *u|E**F	KKMMM%.|%<%<  !	>D&s4yy :--FFwwv		&(9(9ftz&&)) r   c                 V   |pt          j        d          }|                                  d}d}t          j                    5  t	          |          D ]\  }\  }}|t          |          z  t          k    r n|                    |          |                    |          }} | |          }t          j        |j	        d          \  }	}
||
                    d          z  }||
|k                                                                    z  }d d d            n# 1 swxY w Y   ||z  S )Nr,   r   r   )r-   r.   evalno_gradr0   r1   	TEST_SIZEr3   maxr<   sizesumitem)r8   data_loaderr.   correcttotalr;   r<   r=   outputs_	predicteds              r   	test_funcrO   4   sU   *u|E**F	JJLLLGE	 : :)2;)?)? 	: 	:%I~f3t99$y00776??FIIf,=,=&DeDkkG 9W\155LAyV[[^^#E	V+002277999GG: : : : : : : : : : : : : : : U?s   CDD"D@   c           	         t          j        t          j                    t          j        dd          g          }t	          t
          j                            d                    5  t          j	        j
                            t          j        ddd|          | d          }t          j	        j
                            t          j        ddd|          | d          }d d d            n# 1 swxY w Y   ||fS )	N)g_)Ǻ?)gGr?z~/data.lockz~/dataT)r/   download	transform)
batch_sizeshuffleF)r   ComposeToTensor	Normalizer   ospath
expanduserr-   utilsr<   
DataLoaderr   MNIST)rT   mnist_transformsr:   test_loaders       r   get_data_loadersra   F   sA   !)				
 4Y	 J JK  
"'$$]33	4	4 
 
{'22Nt?O   " 3 
 
 k&11N@P   " 2 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 $$s   'A;C..C25C2c                    |                      dd          }t          j                                        }t          j        |rdnd          }t                      \  }}t                                          |          }t          j	        |
                                | d         | d                   }	 t          ||||           t          |||          }d	|i}	|rt          j                    5 }
t          j        |                                t"          j                            |
d
                     t)          j        |	t-          j        |
                     d d d            n# 1 swxY w Y   nt)          j        |	           )Nshould_checkpointFcudar,   lrmomentumre   rf   Tmean_accuracyzmodel.pt)
checkpoint)getr-   rd   is_availabler.   ra   r   r3   optimSGD
parametersr@   rO   tempfileTemporaryDirectorysave
state_dictrY   rZ   joinr   reportr   from_directory)configrc   use_cudar.   r:   r`   r8   r9   accmetricstempdirs              r   train_mnistr{   `   s   

#6>>z&&((H\H7&&%88F 0 2 2L+IILL  E	vd|fZ6H  I!5)\6:::{F33"C(  	!,.. T'
5++--rw||GZ/P/PQQQG
0I'0R0RSSSST T T T T T T T T T T T T T T K   !s   1A.E++E/2E/__main__zPyTorch MNIST Example)descriptionz--cuda
store_trueFzEnables GPU training)actiondefaulthelpz--smoke-testzFinish quickly for testing)r   r      )num_cpus)r,   gpu)	resourcesrh   rE   r   2   )metricmode	schedulernum_samplesexpg\(\?   d   )rh   training_iteration)namestopg-C6?g{Gz?g?g?rg   )tune_config
run_configparam_spacezBest config is:)N)rP   )8argparserY   ro   r-   torch.nnr   torch.nn.functional
functionalr    torch.optimrl   filelockr   torchvisionr   r   rayr   ray.tuner   ray.tune.schedulersr   r2   rD   Moduler   r@   rO   ra   r{   r'   ArgumentParserparseradd_argumentparse_known_argsargsrM   init
smoke_testschedintrd   resources_per_trialTunerwith_resources
TuneConfig	RunConfig
loguniformuniformtunerfitresultsprintget_best_resultrv   errors r   r   <module>r      s6    				                              , , , , , , , , 



             7 7 7 7 7 7 
	
' 
' 
' 
' 
'bi 
' 
' 
'      $% % % %4! ! !2 z$X$1HIIIF
u;Q     |2N     %%''GD!CH4?4aa5555 $#%%E"#CC	NN;;DJK3FGGG#DO"!_4"	
 
 
 "4>!%+/?&Caa 
 
 
 "$/$--$S#..
 
  E( iikkG	E
W4466=>>>~Q P r   