Auto Encoders are a special type of Neural neworks architecture that can be utilized for various applications like simple compression of data(basic auto-encoder), de-noising of data(de-noising auto-encoder) and also generating new samples (Generative AI) of data similar to our dataset(Variational auto-encoders VAEs).
Here, I used the Fashion MNIST and Handwritten-digits MNIST data to implement the above mentioned applications of Auto-Encoders.
Compression and Reconstruction
![image](https://private-user-images.githubusercontent.com/93556280/302700518-897633d1-96ab-42c7-a4b7-d84ec39143de.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM0Mzg2MDIsIm5iZiI6MTcyMzQzODMwMiwicGF0aCI6Ii85MzU1NjI4MC8zMDI3MDA1MTgtODk3NjMzZDEtOTZhYi00MmM3LWE0YjctZDg0ZWMzOTE0M2RlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODEyVDA0NTE0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQxYzM0OWE4ZjEwODVjNDA4MjljZjkwYTZmYzhiOTVhMDA0NWUzYWYyMTI5YzJkODNiNGI1MDA5Y2YzNzYzMDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ueonNCuQVFeUZAkk8Z9b_uqKNNIFH-eEqcJbk28cr-8)
Noise is intentionally added to the data but the model is trained to get the original de-noised image.
![image](https://private-user-images.githubusercontent.com/93556280/302701410-c3d5f618-8bb5-4235-aa86-0dd698e7f775.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM0Mzg2MDIsIm5iZiI6MTcyMzQzODMwMiwicGF0aCI6Ii85MzU1NjI4MC8zMDI3MDE0MTAtYzNkNWY2MTgtOGJiNS00MjM1LWFhODYtMGRkNjk4ZTdmNzc1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODEyVDA0NTE0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIzNzJjODk3NmQ1NTMzZTlhZDYwNjIyODMxOTA3MGVkZWNiYzM5ZTM5OWIyOTQxYTVkOWU2NWRiMDY5MTNhNjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rSrabYAFeRas9XNJWfKj666uy28OzsCFt9KwFTOtfv4)
Generate new samples from the end-to-end model by just getting a sample from the latent-space of the trained VAE.
- Generative results from VAE after 10th epoch
![image](https://private-user-images.githubusercontent.com/93556280/302702099-12464d9c-d14d-4868-82f3-32750f4ca7da.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM0Mzg2MDIsIm5iZiI6MTcyMzQzODMwMiwicGF0aCI6Ii85MzU1NjI4MC8zMDI3MDIwOTktMTI0NjRkOWMtZDE0ZC00ODY4LTgyZjMtMzI3NTBmNGNhN2RhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODEyVDA0NTE0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE2MmFkZGY1OTRjMmMxOTY4YzQ3NTAyMjE4YjkxODhhNThlZDdmYjVkZjFmODI5ODI4YTcyNDBkMTIyZWU0ZGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.NMyqIpejfQIwL34xzW0V5LLcRY9JDw-yf38YXE_J5f0)
- The latent-space of the trained VAE
![image](https://private-user-images.githubusercontent.com/93556280/302702783-8262143b-46f7-4ea1-89bc-1b2bd44d7d3b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM0Mzg2MDIsIm5iZiI6MTcyMzQzODMwMiwicGF0aCI6Ii85MzU1NjI4MC8zMDI3MDI3ODMtODI2MjE0M2ItNDZmNy00ZWExLTg5YmMtMWIyYmQ0NGQ3ZDNiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODEyVDA0NTE0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExYWE5MzQ4M2U3YTExNjZlMTYyZjIyZTc3MGI3OTY1ZWZhZGE0NTM2MzI2YzY1NmIzZmZiOGYzZTZkNzI4MWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.JWUJJ_fbLT_IQr2zT6qA3w-k8U6NQv6pVWngeB_OAek)
We can see a nice continuous space representing the distribution from one number to another.