
    &`i                        d dl Z d dlmZ d dlmZ d dlZd dlZd dl	m
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 d dl	mZ d dlZdZdZdZdZd	Z dZ!dZ"d
Z#dZ$e j%        &                    d          Z'ddZ(d Z) G d de
j*                  Z+ G d de
j*                  Z, G d de
j*                  Z-ddZ.d Z/d Z0d Z1dS )    N)entropy)Variable)
functional   @          d   g      ?   z~/.ray/models/mnist_cnn.pt~/datac                 8   t          j        | dt          j        t          j        t
                    t          j                    t          j        dd          g                    }t          j	        j
                            |t          dt                    }|S )NT)g(rw?)gKH?)rootdownload	transform)
batch_sizeshufflenum_workers)dsetMNIST
transformsComposeResize
image_sizeToTensor	Normalizetorchutilsdata
DataLoaderr   workers)data_dirdataset
dataloaders      |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/examples/pbt_dcgan_mnist/common.pyget_data_loaderr%   -   s    j$!*--#%%$Z<<
 

 
 
G !,,J' -  J     c                    | j         j        }|                    d          dk    r-t          j                            | j        j        dd           d S |                    d          dk    rWt          j                            | j        j        dd           t          j                            | j	        j        d           d S d S )NConvg        g{Gz?	BatchNormg      ?r   )
	__class____name__findnninitnormal_weightr   	constant_bias)m	classnames     r$   weights_initr6   D   s    $I~~f##
sD11111		$	$	*	*
sD111
!&+q))))) 
+	*r&   c                   $     e Zd Z fdZd Z xZS )	Generatorc                    t          t          |                                            t          j        t          j        t          t          dz  dddd          t          j        t          dz            t          j	        d          t          j        t          dz  t          dz  dddd          t          j        t          dz            t          j	        d          t          j        t          dz  t          dddd          t          j        t                    t          j	        d          t          j        t          t          dddd          t          j                              | _        d S )N   r	   r   Fr3   Tr   )superr8   __init__r.   
SequentialConvTranspose2dnzngfBatchNorm2dReLUncTanhmainselfr+   s    r$   r=   zGenerator.__init__O   s   i'')))Mr37Aq!%@@@N37##GDMMsQwaAquEEEN37##GDMMsQwQ15AAAN3GDMMsB1ae<<<GII
 
			r&   c                 ,    |                      |          S NrF   rH   inputs     r$   forwardzGenerator.forward`       yyr&   r,   
__module____qualname__r=   rN   __classcell__r+   s   @r$   r8   r8   N   sG        
 
 
 
 
"             r&   r8   c                   $     e Zd Z fdZd Z xZS )Discriminatorc                    t          t          |                                            t          j        t          j        t          t          dddd          t          j        dd          t          j        t          t          dz  dddd          t          j	        t          dz            t          j        dd          t          j        t          dz  t          dz  dddd          t          j	        t          dz            t          j        dd          t          j        t          dz  dddd	d          t          j
                    
  
        | _        d S )
Nr:   r   r	   Fr;   g?T)inplacer   )r<   rV   r=   r.   r>   Conv2drD   ndf	LeakyReLUrB   SigmoidrF   rG   s    r$   r=   zDiscriminator.__init__e   s   mT""++---MIb#q!QU333Ld+++Ic37Aq!%888N37##Ld+++IcAgsQw1ae<<<N37##Ld+++IcAgq!Q666JLL
 
			r&   c                 ,    |                      |          S rJ   rK   rL   s     r$   rN   zDiscriminator.forwardt   rO   r&   rP   rT   s   @r$   rV   rV   d   sG        
 
 
 
 
             r&   rV   c                   (     e Zd ZdZ fdZd Z xZS )NetzB
    LeNet for MNist classification, used for inception_score
    c                 ^   t          t          |                                            t          j        ddd          | _        t          j        ddd          | _        t          j                    | _        t          j	        dd          | _
        t          j	        dd          | _        d S )Nr	   
   r   )kernel_size   @  2   )r<   r_   r=   r.   rY   conv1conv2	Dropout2d
conv2_dropLinearfc1fc2rG   s    r$   r=   zNet.__init__   s    c4!!###Yq"!444
Yr21555
,..9S"%%9R$$r&   c           	         t          j        t          j        |                     |          d                    }t          j        t          j        |                     |                     |                    d                    }|                    dd          }t          j        |                     |                    }t          j        || j	                  }| 
                    |          }t          j        |d          S )Nr   r)   rd   )trainingr	   )dim)Frelu
max_pool2drf   ri   rg   viewrk   dropoutrn   rl   log_softmax)rH   xs     r$   rN   zNet.forward   s    F1<

1q1122F1<

1 > >BBCCFF2sOOF488A;;Ia$-000HHQKK}QA&&&&r&   )r,   rQ   rR   __doc__r=   rN   rS   rT   s   @r$   r_   r_   |   sQ         % % % % %' ' ' ' ' ' 'r&   r_   c                     t          |           }t          j        }t          j        j                            | |          }t          j        |          t          j	        dd          
                    |          fd}t          j        |df          }t          |d          D ]\\  }	}
|

                    |          }
t          |
          }|
                                d         } ||          ||	|z  |	|z  |z   <   ]g }t!          |          D ]}||||z  z  |dz   ||z  z  d d f         }t          j        |d	          }g }t!          |j        d                   D ]1}	||	d d f         }|                    t)          ||                     2|                    t          j        t          j        |                               t          j        |          t          j        |          fS )
N)r   )   ry   bilinear)sizemodec                      |           }  |           } t          j        |           j                                                                        S rJ   )rp   softmaxr   cpunumpy)rv   cmups    r$   get_predz!inception_score.<locals>.get_pred   sF    BqEEBqEEy|| $$&&,,...r&   ra   r   r	   )axis)lenr   FloatTensorr   r   r   raygetr.   Upsampletypenpzeros	enumerater   r{   rangemeanshapeappendr   expstd)imgsmnist_model_refr   splitsNdtyper#   r   predsibatchbatchvbatch_size_isplit_scoreskpartpyscorespyxr   r   s                      @@r$   inception_scorer      s   D		AE!,,Tj,IIJ		!	!B	(	4	4	4	9	9%	@	@B/ / / / / /
 HaWEj!,, Q Q5

5!!%zz||A@H@P@Pa*nq:~<<== L6]] 5 5Q!v+&!a%AK)@@!!!CDWT"""tz!}%% 	, 	,Aq!!!t*CMM'#r**++++BF276??3344447<  "&"6"666r&   c	                    d}	d}
t          |d          D ]\  }}|t          k    r n|                                  |d                             |          }|                    d          }t          j        |f|	t
          j        |          } | |                              d          } |||          }|	                                 |
                                                                }t          j        |t          dd|          } ||          }|                    |
            | |                                                              d          } |||          }|	                                 |
                                                                }||z   }|                                 |                                 |                    |	            | |                              d          } |||          }|	                                 |
                                                                }|                                 t#          ||          \  }}|dz  dk    rKt%          d|t'          |          |                                |                                ||||fz             |                                |                                |fS )Nr	   r   )r   devicer)   )r   ra   zX[%d/%d]	Loss_D: %.4f	Loss_G: %.4f	D(x): %.4f	D(G(z)): %.4f / %.4f 	Inception score: %.4f)r   train_iterations_per_step	zero_gradtor{   r   fullfloatrs   backwardr   itemrandnr@   fill_detachstepr   printr   )netDnetGoptimGoptimD	criterionr#   	iterationr   r   
real_label
fake_labelr   r   real_cpub_sizelabeloutput	errD_realD_xnoisefake	errD_fakeD_G_z1errDerrGD_G_z2is_scoreis_stds                               r$   
train_funcr      s    JJZ++ 0 04)))E7::f%%q!!
F9jFSSSh$$R((Ife,,	kkmm  ""FB1V<<<tE{{Jdkkmm$$))"--Ife,,	##%%9$Jd$$y''##%%*4AA& r>Q8 
OOIIKKIIKK	   99;;		X--r&   c           	         t          t          |                     }t          j        d           t          j        d           t          j        d           t          j        t          j        t          j
        |d         d d         dd	                                          d
                     t          j                     d S )N   r   figsizeoffzOriginal Imagesr   r   r   Tpadding	normalizer	   r   r   )nextiterpltfigurer   titleimshowr   	transposevutils	make_gridr   show)r#   
real_batchs     r$   plot_imagesr      s    d:&&''JJvHUOOOI   J
Z]3B3/dKKKOOQQ	
 	
   HJJJJJr&   c                    g }t          j        dt          dd          }| D ]}t          j        t          j                            |d                    }t                      }|                    |d                    t          j	                    5   ||          
                                                                }d d d            n# 1 swxY w Y   |                    t          j        |dd                     t          j        d	          }t          j        d
           d |D             }t%          j        ||ddd          }	|	                    ddd           t          j                     d S )Nr   r	   zcheckpoint.pt	netGmodelr   Tr   r   r   r   c                 b    g | ],}t          j        t          j        |d           d          g-S )r   T)animated)r   r   r   r   ).0r   s     r$   
<listcomp>zdemo_gan.<locals>.<listcomp>  s6    
U
U
UqCJr|Ay11DAAAB
U
U
Ur&   i  )intervalrepeat_delayblitz./generated.gifimagemagickH   )writerdpi)r   r   r@   loadospathjoinr8   load_state_dictno_gradr   r   r   r   r   r   r   r   	animationArtistAnimationsaver   )
checkpoint_pathsimg_listfixed_noiser   checkpoint_dictloadedGr   figimsanis
             r$   demo_ganr   
  s   H+b"a++K  K K*RW\\$%H%HII++ <===]__ 	7 	77;''..004466D	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7(qDIIIJJJJ
*V
$
$
$CHUOOO
U
UH
U
U
UC

#S4d  C HH}"H===HJJJJJs   0CC	C	)r   )r   r	   )2r   matplotlib.animationr   matplotlib.pyplotpyplotr   r   r   r   torch.nnr.   torch.nn.paralleltorch.utils.datatorchvision.datasetsdatasetsr   torchvision.transformsr   torchvision.utilsr   r   scipy.statsr   torch.autogradr   r   rp   r   r    r   r   rD   r@   rA   rZ   beta1r   r   
expanduser
MODEL_PATHr%   r6   Moduler8   rV   r_   r   r   r   r    r&   r$   <module>r     s/   				 ( ( ( ( ( (                          # # # # # # + + + + + + " " " " " "       # # # # # # $ $ $ $ $ $ 



 

  	 	 	 	  W <==
   .* * *         	      ,         BI      0' ' ' ' '") ' ' '.7 7 7 7H@. @. @.F       r&   