112 lines
4.0 KiB
Markdown
112 lines
4.0 KiB
Markdown
# Praktikum Deep Learning - Kelompok 3
|
|
|
|
Repository ini berisi implementasi tugas dan eksperimen Deep Learning, mencakup perbandingan arsitektur Multi-Layer Perceptron (MLP), teknik regularisasi (Batch Normalization & Dropout), studi kasus pemilihan model (*Model Selection*), serta implementasi Convolutional Neural Network (CNN) pada dataset MNIST.
|
|
|
|
---
|
|
|
|
## 📁 Struktur Folder Proyek
|
|
|
|
Struktur direktori telah dirapikan secara modular sebagai berikut:
|
|
|
|
```text
|
|
kelompok3-deeplearning/
|
|
├── .gitignore # Konfigurasi file & folder yang diabaikan git
|
|
├── requirements.txt # Daftar pustaka / dependensi Python
|
|
├── README.md # Dokumentasi utama proyek
|
|
├── docs/ # Dokumentasi dan analisis tambahan
|
|
│ └── model_selection.md # Analisis justifikasi pemilihan model (Tugas 3)
|
|
├── src/ # Modul reusable / fungsi pembantu
|
|
│ ├── __init__.py
|
|
│ ├── data_loader.py # Loader & preprocessor dataset MNIST (MLP & CNN)
|
|
│ ├── models.py # Definisi arsitektur model (MLP, Regularized MLP, CNN)
|
|
│ └── utils.py # Callback timer, manajemen folder, plotting helper
|
|
├── experiments/ # Skrip eksperimen & tugas utama
|
|
│ ├── 01_mlp_comparison.py # Tugas 1: Perbandingan 3 arsitektur MLP
|
|
│ ├── 02_regularization.py # Tugas 2: Eksperimen Regularisasi BatchNorm + Dropout
|
|
│ ├── 03_model_selection.py # Tugas 3: Implementasi contoh arsitektur model
|
|
│ └── 04_cnn_mnist.py # Tugas 4: Implementasi CNN MNIST & perbandingan vs MLP
|
|
└── results/ # Output dari eksperimen
|
|
├── figures/ # Plot visualisasi (akurasi, loss curve, bar chart)
|
|
│ ├── hasil_cnn.png
|
|
│ └── loss_regularization.png
|
|
└── models/ # Bobot model terlatih (.keras)
|
|
├── model_cnn_mnist.keras
|
|
└── model_c_regularized.keras
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Panduan Instalasi & Menjalankan
|
|
|
|
### 1. Buat dan Aktifkan Virtual Environment
|
|
|
|
```bash
|
|
# Linux / macOS
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
|
|
# Windows (Command Prompt / PowerShell)
|
|
python -m venv .venv
|
|
.venv\Scripts\activate
|
|
```
|
|
|
|
### 2. Install Dependensi
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 3. Menjalankan Eksperimen
|
|
|
|
Semua skrip eksperimen berada di dalam folder `experiments/`:
|
|
|
|
- **Eksperimen 1: Perbandingan Arsitektur MLP**
|
|
```bash
|
|
python experiments/01_mlp_comparison.py
|
|
```
|
|
|
|
- **Eksperimen 2: Regularisasi (BatchNorm + Dropout)**
|
|
```bash
|
|
python experiments/02_regularization.py
|
|
```
|
|
|
|
- **Eksperimen 3: Contoh Model Selection (LSTM, CNN, NLP, XGBoost)**
|
|
```bash
|
|
python experiments/03_model_selection.py
|
|
```
|
|
|
|
- **Eksperimen 4: CNN MNIST vs MLP**
|
|
```bash
|
|
python experiments/04_cnn_mnist.py
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Ringkasan Hasil Eksperimen
|
|
|
|
### 1. Perbandingan Arsitektur MLP (Tugas 1)
|
|
- **Model A (1 Hidden Layer - 64)**: ~97.06% Akurasi, 50,890 Parameter
|
|
- **Model B (2 Hidden Layers - 128 → 64)**: ~97.24% Akurasi, 109,386 Parameter
|
|
- **Model C (3 Hidden Layers - 256 → 128 → 64)**: ~97.64% Akurasi, 242,762 Parameter
|
|
|
|
### 2. Regularisasi pada Model C (Tugas 2)
|
|
- Penambahan **Batch Normalization** dan **Dropout (0.3)** terbukti menstabilkan proses training dan menekan *generalization gap* / overfitting pada kurva validasi.
|
|
|
|
### 3. Keunggulan CNN vs MLP pada MNIST (Tugas 4)
|
|
| Metrik | MLP Terbaik (Model C) | CNN Sederhana | Perubahan |
|
|
| :--- | :--- | :--- | :--- |
|
|
| **Test Accuracy** | 97.64% | **99.03%** | **+1.39%** |
|
|
| **Error Rate** | 2.36% | **0.97%** | **-58.9% (relatif)** |
|
|
| **Jumlah Parameter** | 242,762 | **121,930** | **-49.8% (lebih efisien)** |
|
|
| **Salah Klasifikasi** | 236 / 10,000 | **97 / 10,000** | **139 gambar lebih sedikit** |
|
|
|
|
---
|
|
|
|
## 🛠️ Teknologi & Framework
|
|
- Python 3.10+
|
|
- TensorFlow / Keras
|
|
- NumPy & Pandas
|
|
- Matplotlib & Seaborn
|
|
- XGBoost & Scikit-Learn
|
|
|