In this repository you will find all the homeworks I did for the Neural Networks and Deep Learning course at University of Padua. In each of these homeworks we explored different machine learning techniques (supervised learning, unsupervised learning and reinforcement learning) by using neural networks. All the code was implemented using PyTorch.
In this work I implemented simple neural network models for solving two classical supervised learning tasks. The approximation of a function using a regression model and the classification of images from the Fashion MNIST dataset. For both tasks I explored the usage of different optimizers and regularization methods. The hyperparameters were optimised using a gridsearch for the regression and a Bayesian optimisation using Optuna for the classification task.
- The complete report of this homework can be found here
Homework 2: Unsupervised Learning (Autoencoder, Variational Autoencoder, Generative Adversarial Network)
In this work I explored different unsupervised learning techniques based on deep learning. First a convolutional autoencoder was trained and tested on the fashion MNIST dataset, its learning parameters were optimized using OPTUNA. Then the best convolutional autoencoder was used in the context of transfer learning to perform a supervised classification task. Finally a variational convolutional autoencoder and a Generative Adversarial Network were trained and tested with the purpose of generating new samples.
- The complete report of this homework can be found here
In this work we explored how to use neural networks to solve reinforcement learning problems under the paradigm of Deep Q-Learning. A learning agent was trained to solve the CartPole-v1 environment using the state representations provided by the environment. Also a learning agent was implemented to solve the LunarLander-v2 environment directly from the state representation.
- The complete report of this homework can be found here


