/Deep-Learning-Applications

This repository contains the code and report for the final evaluation of the Deep Learning Applications module. It includes three exercises on Convolutional Neural Networks (CNNs), Reinforcement Learning, and Adversarial Training. Each exercise is designed to showcase different aspects of deep learning techniques and their applications.

Primary LanguageJupyter Notebook

Deep Learning Applications

This repository contains the code and report for the final evaluation of the Deep Learning Applications module. It includes three lab exercises focusing on Convolutional Neural Networks (CNNs), Reinforcement Learning, and Adversarial Training.

Table of Contents

Introduction

This repository contains the implementation and evaluation of three deep learning lab exercises. Each lab focuses on different aspects of deep learning techniques and their applications.

Lab 1: CNN and ResNet

Exercise 1.1: Residual Networks

Quantify why the residual versions of the networks learn more effectively.

Exercise 1.2: Fully-Convolutional Networks

Take one of your trained classifiers (CNN or ResNet) and fully-convolutionalize it. Turn it into a network that can predict classification outputs at all pixels in an input image. Attempt to turn this into a detector of handwritten digits.

Exercise 1.3: CNN Attention

Use your implementation to demonstrate how your trained CNN attends to specific image features to recognize specific classes.

Lab 2: Deep Reinforcement Learning

Exercise 2.1: Solving Lunar Lander with REINFORCE

Implement a policy gradient method (REINFORCE) to solve the Lunar Lander environment.

Exercise 2.2: Solving Cartpole and Lunar Lander with Deep Q-Learning

Implement Deep Q-Learning to solve the Cartpole and Lunar Lander environments.

Exercise 2.3: Solving the OpenAI CarRacing Environment

Implement a reinforcement learning algorithm to solve the OpenAI CarRacing environment.

Lab 3: Adversarial Learning and OOD Detection

Exercise 3.1: Implementing ODIN for OOD Detection

Implement the ODIN method for Out-of-Distribution (OOD) detection.

Exercise 3.2: Implementing JARN

Implement the JARN technique for adversarial robustness.

Exercise 3.3: Targeted Adversarial Attacks

Experiment with targeted adversarial attacks and evaluate their impact on model performance.

Installation

To run the code in this repository, you need to have Python 3.7 or higher installed.

Results

The results of each exercise, including performance metrics, plots, and model evaluations, are documented in the respective Jupyter notebooks and reports within each lab exercise directory.

Contributing

Contributions are welcome! If you have any suggestions or improvements, please create a pull request or open an issue.

License

This repository is licensed under the MIT License. See the LICENSE file for more details.