Skip to content

My notes and solutions for the 'Deep Learning Specialization' by DeepLearningAI,

Notifications You must be signed in to change notification settings

lionlai1989/Deep_Learning_Specialization

Repository files navigation

Deep Learning Specialization

This repository comprises a comprehensive collection of materials for the course of Deep Learning Specialization, offered by Coursera and DeepLearning.AI, including my own solutions to the practice problems and personal notes accumulated during the course.

Description

This Specialization explores fundamental principles in deep learning and is divided into five series courses, each offering thorough explanation and unique insights into this dynamic field.

  • Neural Networks and Deep Learning:

    The first course explains what are neural networks and what neural networks can solve but conventional algorithms (e.g., linear regression and logistic regression) can't. Moreover, why using deep neural networks instead of shallow neural networks is explained and demonstrated with intuitive examples in the Jupyter Notebook.

  • Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization:

    The second course focuses on various techniques that aid in constructing better neural networks. It covers the significance of random initialization and how it effectively addresses the issues of exploding or vanishing gradients. Additionally, the course explores the normalization of data and hidden layers, various regularization methods including L2 regularization, dropout, and improved ways to perform gradient descent, such as incorporating momentum.

  • Structuring Machine Learning Projects:

    The third course demonstrates techniques for diagnosing errors in machine learning systems, prioritizing strategies to reduce these errors, and understanding complex ML settings. These settings include scenarios such as mismatched training/test sets and comparing or surpassing human-level performance, also known as Bayes optimal error. Moreover, the course presents the details of end-to-end learning, transfer learning, and multi-task learning.

  • Convolutional Neural Networks (CNN):

    While disregarding the constraints of available training data and computational resources, a fully connected network has the potential to perform all the tasks a CNN can accomplish. This course explains the rationale behind utilizing CNNs to replace fully connected networks. It then covers the foundational concepts necessary to construct a CNN, followed by an introduction to classic networks such as LeNet-5, AlexNet, and VGG-16. Furthermore, the course introduces recent and popular networks, including Residual and Inception networks, and comprehensive explanations of the You Only Look Once (YOLO) algorithm and U-Net.

  • Sequence Models:

    RNN models can be used to handle problems with sequential data. I first built an RNN model using only NumPy to familiarize myself with RNNs. Later, I used TensorFlow to build applications such as keyword spotting, machine translation, music synthesis, and more. Moreover, I have a full understanding of attention mechanisms and the transformer model.

Getting Started

All the results in Jupyter Notebook can be reproduced by following the instructions below.

Dependencies

Before you start, you need to make sure you have the following dependencies installed:

  • Python-3.10: Python-3.10 is used throughout all the solutions to the problems.

Downloading

  • To download this repository, run the following command:
git clone https://github.com/lionlai1989/Deep_Learning_Specialization.git

Install Python Dependencies

  • Create and activate a Python virtual environment
python3.10 -m venv venv_deep_learning && source venv_deep_learning/bin/activate
  • Update pip and setuptools:
python3 -m pip install --upgrade pip setuptools
  • Install required Python packages in requirements.txt.
python3 -m pip install -r requirements.txt

Running Jupyter Notebook

Now you are ready to go to each Jupyter Notebook and run the code. Please remember to select the kernel you just created in your virtual environment venv_deep_learning.

Contributing

Any feedback, comments, and questions about this repository are welcome. However, I would like to clarify that this repository serves as a personal record of my learning history, and therefore I will not accept any form of pull requests or merge requests.

Authors

@lionlai

Version History

  • 1.0.0
    • Finish the Deep Learning Specialization by 3rd August 2023.

Reference

  • Disable annoying tensorflow DEBUG message. Put the following code at the start of the nodebook.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # or any {'0', '1', '2', '3'}. 3: NONE