Course: Introduction to Deep Learning Focus: Practical implementation of neural networks and deep learning algorithms using Python
This repository contains a comprehensive collection of Jupyter notebooks, assignments, and practice implementations covering fundamental to advanced deep learning concepts. All code is written in Python using industry-standard frameworks including TensorFlow and Keras.
This repository demonstrates mastery of:
β
Neural Network Fundamentals - Perceptrons, activation functions, backpropagation
β
Deep Learning Architectures - CNNs, RNNs, and specialized networks
β
Gradient Descent Optimization - SGD, Adam, RMSprop, learning rate scheduling
β
TensorFlow & Keras - Model building, training, and deployment
β
Computer Vision - Image classification, feature extraction, transfer learning
β
Model Evaluation - Training/validation splits, performance metrics, overfitting prevention
deep-learning-python/
βββ assets/ # Handwritten solutions for assignments and lectures
β βββ HW1/ # Assets for assignment1.ipynb
β βββ HW2/ # Assets for assignment2.ipynb
β βββ ...
β βββ HW6/ # Assets for assignment6.ipynb
β βββ Lecture2/ # Assets for lecture2.ipynb
β βββ Lecture6/ # Assets for lecture6a/b/c/d.ipynb
βββ Assignments/ # Python code for Deep Learning
β βββ assignment1-test.ipynb # Test script for Assignment 1
β βββ assignment1.ipynb # Code for Assignment 1
β βββ assignment2-test.ipynb # Test script for Assignment 2
β βββ assignment2.ipynb # Code for Assignment 2
β βββ ...
β βββ assignment6.ipynb # Code for Assignment 6
βββ Lectures/ # Lecture notebooks and examples
β βββ lecture1.ipynb # Code from 1st week of lectures
β βββ lecture1.ipynb # Code from 2nd week of lectures
β βββ ...
β βββ lecture7e.ipynb # Code from 7th week of lectures
βββ PracticeExams/ # Exam prep materials
β βββ 3dplotTest.ipynb/ # 3D rendering script for GPU testing
β βββ practiceExam1-11.ipynb # Midterm practice problems
β βββ practiceExam1-12.ipynb # Midterm practice problems
β βββ practiceExam1-13.ipynb # Midterm practice problems
β βββ practiceExam1-14.ipynb # Midterm practice problems
β βββ practiceExam1-15.ipynb # Midterm practice problems
β βββ quiz5.ipynb # Practice quiz question
βββ assets/ # Images, diagrams, and resources
βββ README.md # This document
1. Perceptron Algorithm
- Single-layer perceptrons
- Linear separability
- Decision boundaries
- Weight updates and bias
2. Neural Networks
- Multi-layer perceptrons (MLPs)
- Activation functions (ReLU, sigmoid, tanh, softmax)
- Forward propagation
- Backpropagation algorithm
3. Gradient Descent
- Batch gradient descent
- Stochastic gradient descent (SGD)
- Mini-batch gradient descent
- Momentum and adaptive learning rates
4. Convolutional Neural Networks (CNNs)
- Convolution layers and kernels
- Pooling operations (max, average)
- Feature maps and filters
- Image classification tasks
5. Deep Learning Techniques
- Dropout regularization
- Batch normalization
- Transfer learning
- Data augmentation
6. Model Optimization
- Loss functions (MSE, cross-entropy)
- Optimizers (Adam, RMSprop, Adagrad)
- Learning rate scheduling
- Early stopping
| Technology | Purpose | Documentation |
|---|---|---|
| Python 3.x | Core programming language | Python Docs |
| TensorFlow | Deep learning framework | TensorFlow |
| Keras | High-level neural network API | Keras Docs |
| Jupyter Notebook | Interactive development environment | Jupyter |
| NumPy | Numerical computations | NumPy Docs |
| Matplotlib | Data visualization | Matplotlib |
| scikit-learn | Machine learning utilities | scikit-learn |
Python Environment:
- Python 3.8 or higher
- Mambaforge package manager (recommended)
- Conda/Mamba environments
Hardware Setup:
- Development Machine: Dell Precision 5540 Laptop
- Intel Core i9 processor
- NVIDIA Quadro T2000 (4GB VRAM) - GPU acceleration for model training
- CUDA-enabled TensorFlow for local GPU training
- 16GB+ system RAM recommended
- SSD storage for faster data loading
π‘ GPU Advantage: All models in this repository were trained using the NVIDIA Quadro T2000, significantly reducing training time compared to CPU-only execution. TensorFlow automatically detects and utilizes the GPU when properly configured.
Using Mambaforge (Recommended):
# Clone the repository
git clone https://github.com/ADolbyB/deep-learning-python.git
cd deep-learning-python
# Create conda environment with Python 3.10
mamba create -n deep-learning python=3.10
mamba activate deep-learning
# Install TensorFlow with GPU support
mamba install -c conda-forge tensorflow-gpu cudatoolkit cudnn
# Install additional packages
mamba install -c conda-forge keras numpy matplotlib jupyter scikit-learn pandas
# Verify GPU detection
python -c "import tensorflow as tf; print('GPU Available:', tf.config.list_physical_devices('GPU'))"
# Launch Jupyter Notebook or VS Code
jupyter notebook
# Or use VS Code with Jupyter extensionEnvironment Location:
- Conda environments stored at:
~/mambaforge/envs/deep-learning/ - Package cache:
~/mambaforge/pkgs/
VS Code Setup (GPU-Accelerated Development):
-
Install VS Code extensions:
- Python
- Jupyter
- Pylance
-
Select the conda environment:
- Press
Ctrl+Shift+P - Type "Python: Select Interpreter"
- Choose
~/mambaforge/envs/deep-learning/bin/python
- Press
-
Open any
.ipynbnotebook and run cells with GPU acceleration
π― Pro Tip: Use
watch -n 1 nvidia-smiin a separate terminal to monitor GPU utilization during training.
- Navigate to Lectures - Start with
Lectures/for fundamentals - Work through Assignments -
Assignments/are structured in order to follow assignments - Review Practice Exams - Test and modify to understand concepts
- Experiment - Modify code and explore different approaches
Perceptron Implementation
- From-scratch perceptron algorithm
- Visualization of decision boundaries
- Binary classification problems
Neural Network Training
- Multi-layer network construction
- Custom training loops
- Performance evaluation and metrics
CNN Image Classification
- Image preprocessing pipelines
- Convolutional layer design
- Transfer learning with pre-trained models
Course: Introduction to Deep Learning
Level: Upper-division Computer Science Elective
Format: Jupyter Notebooks with embedded explanations and visualizations
Learning Approach:
- Theory combined with practical implementation
- Progressive difficulty from fundamentals to advanced topics
- Real-world datasets and problems
- Emphasis on understanding why algorithms work, not just how
- "Deep Learning" by Ian Goodfellow, Yoshua Bengio, Aaron Courville
- "Hands-On Machine Learning" by AurΓ©lien GΓ©ron
- "Neural Networks and Deep Learning" by Michael Nielsen (free online)
- 3Blue1Brown: Neural Networks
- Sentdex: Deep Learning with Python
- Stanford CS231n: CNNs for Visual Recognition
Code Organization:
- β Modular, reusable functions
- β Clear variable naming and documentation
- β Proper train/validation/test splits
- β Reproducible results with random seeds
Model Development:
- β Baseline model establishment
- β Iterative improvement and experimentation
- β Hyperparameter tuning
- β Performance visualization and analysis
Documentation:
- β Markdown cells explaining concepts
- β Inline comments for complex operations
- β Visualizations of results and metrics
- β Lessons learned and insights
While this is primarily a coursework repository, improvements are welcome:
- π Documentation enhancements
- π Bug fixes in implementations
- π‘ Additional examples or explanations
- π¨ Visualization improvements
Please open an issue or submit a pull request!
This project is licensed under the GNU GPL v3 License - see the LICENSE.md file for details.
Academic Integrity Notice: This repository represents completed coursework. If you're currently enrolled in a similar course, please use this as reference material only and adhere to your institution's academic honesty policies.
GitHub: Joel Brigida
LinkedIn: Joel Brigida
Questions about implementations or concepts? Feel free to open an issue!