
    &`i              
       |   d dl Z d dlZd dlZd dlmZ d dlmZ dZej        dk    r ej	        d            nd dl
mZ d dlmZ d dlmZmZmZ  G d	 d
e          Z G d dej                  Zedk    r e j                    Ze                    ddd           e                                \  ZZ ej        e ej        dd           ej        dej        rdndid          d ej         g d          i          Z!e!"                                Z# e$de#%                                j&                   dS dS )    N)FileLock)tune
   )      )Model)	load_data)Conv2DDenseFlattenc                   &     e Zd Zd fd	Zd Z xZS )MyModel   c                    t          t          |                                            t          ddd          | _        t                      | _        t          |d          | _        t          dd          | _	        d S )N    r   relu)
activationr   softmax)
superr   __init__r
   conv1r   flattenr   d1d2)selfhiddens	__class__s     v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/examples/tf_mnist_example.pyr   zMyModel.__init__    sl    gt%%'''Bf555
yyF333y111    c                     |                      |          }|                     |          }|                     |          }|                     |          S N)r   r   r   r   )r   xs     r   callzMyModel.call'   s?    JJqMMLLOOGGAJJwwqzzr   )r   )__name__
__module____qualname__r   r#   __classcell__)r   s   @r   r   r      sL        2 2 2 2 2 2      r   r   c                   ,    e Zd Zd ZdefdZd Zd ZdS )MNISTTrainablec                     dd l t          t          j                            d                    5  t                      \  \  }}\  }}d d d            n# 1 swxY w Y   |dz  |dz  }}|dj        f         }|dj        f         }j        j        	                    ||f           _
         j
                            d                              |                    dd                     _
        j        j        	                    ||f                              d           _        t          |                    dd	          
           _        j        j                                         _        j        j                                         _        j        j                            d           _        j        j                            d           _        j        j                            d           _        j        j                            d           _        j         fd            }j         fd            }| _         | _!        d S )Nr   z~/.tune.lockg     o@.i'  batchr   r   r   )r   
train_loss)nametrain_accuracy	test_losstest_accuracyc                                                     5 }                    |           }                    ||          }d d d            n# 1 swxY w Y   |                    |j        j                  }j                            t          |j        j                                                 |           	                    ||           d S r!   )
GradientTapemodelloss_objectgradienttrainable_variables	optimizerapply_gradientszipr,   r.   )imageslabelstapepredictionsloss	gradientsr   tfs         r   
train_stepz(MNISTTrainable.setup.<locals>.train_stepM   s   "" =d"jj00''<<= = = = = = = = = = = = = = = dDJ,JKKIN**Itz=>>   OOD!!!44444s   ,AAAc                                          |           }                    ||          }                    |                               ||           d S r!   )r3   r4   r/   r0   )r:   r;   r=   t_lossr   s       r   	test_stepz'MNISTTrainable.setup.<locals>.test_stepZ   sW    **V,,K%%fk::FNN6"""v{33333r   )"
tensorflowr   ospath
expanduserr	   newaxisdataDatasetfrom_tensor_slicestrain_dsshuffler+   gettest_dsr   r3   keraslossesSparseCategoricalCrossentropyr4   
optimizersAdamr7   metricsMeanr,   SparseCategoricalAccuracyr.   r/   r0   functiontf_train_steptf_test_step)	r   configx_trainy_trainx_testy_testrA   rD   r@   s	   `       @r   setupzMNISTTrainable.setup/   s    bg((8899 	? 	?3<;;0Wg 0	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?!E/6E> #rz/*RZ(::GW;MNN--e44::6::gr;R;RSSw9966:JKKQQRTUUVZZ	3%?%?@@@
8?HHJJ,1133(*//\/BB h.HH! I 
 
 )..K.@@X-GG  H 
 
 

	5 
	5 
	5 
	5 
	5 

	5 
	4 	4 	4 	4 
	4 (%s   AAAcheckpoint_dirc                     d S r!    )r   rb   s     r   save_checkpointzMNISTTrainable.save_checkpointe       tr   c                     d S r!   rd   )r   
checkpoints     r   load_checkpointzMNISTTrainable.load_checkpointh   rf   r   c                    | j                                          | j                                         | j                                         | j                                         t          | j                  D ]+\  }\  }}|t          k    r n|                     ||           ,| j	        D ]\  }}| 
                    ||           | j        | j                                                                         | j                                                                        dz  | j                                                                        | j                                                                        dz  dS )Nd   )epochr>   accuracyr/   mean_accuracy)r,   reset_statesr.   r/   r0   	enumeraterM   MAX_TRAIN_BATCHrZ   rP   r[   	iterationresultnumpy)r   idxr:   r;   test_imagestest_labelss         r   stepzMNISTTrainable.stepk   se   $$&&&((***##%%%'')))%.t}%=%= 	/ 	/!C!&&_$$vv....(, 	8 	8$Kk;7777 ^O**,,2244+2244::<<sB..006688!/6688>>@@3F
 
 	
r   N)r$   r%   r&   ra   strre   ri   rx   rd   r   r   r)   r)   .   s]        4& 4& 4&lc      
 
 
 
 
r   r)   __main__z--smoke-test
store_truezFinish quickly for testing)actionhelpr/   min)metricmodetraining_iteration   2      )stopverboser   )r   @   r   )tune_config
run_configparam_spacez!Best hyperparameters found were: )'argparserF   sysfilelockr   rayr   rq   version_infoexittensorflow.kerasr   tensorflow.keras.datasets.mnistr	   tensorflow.keras.layersr
   r   r   r   	Trainabler)   r$   ArgumentParserparseradd_argumentparse_known_argsargs_Tuner
TuneConfig	RunConfig
smoke_testgrid_searchtunerfitresultsprintget_best_resultr\   rd   r   r   <module>r      s$    				 



            wCHQKKKK&&&&&&999999>>>>>>>>>>    e   R
 R
 R
 R
 R
T^ R
 R
 R
j z$X$&&F
|2N     %%''GD!DJ#DO
 
 
 "4>&T_(D"E
 
 
  0 0 ? ?@  E iikkG	E
-w/F/F/H/H/OPPPPP+ r   