Data: Strategi “Pretrained” Tanpa Unduhan
Proyek transfer learning biasanya memakai model pretrained besar (ResNet,
EfficientNet) yang bobotnya diunduh dari internet. Proyek ini memilih jalur
yang dapat diuji penuh di CPU tanpa unduhan: model “pretrained” dibuat
sendiri dari dataset digits scikit-learn, mengikuti pola chapter
Transfer Learning untuk Gambar.
Pembagian tugas #
| Tugas | Kelas | Jumlah sampel | Peran |
|---|---|---|---|
| A | digit 0-4 | 901 | melatih backbone (sumber “pretrained”) |
| B | digit 5-9 (direlabel 0-4) | 896 | target transfer: hanya 30 sampel latih |
- Tugas A memakai 80/20 latih-uji; head tugas A dibuang setelah pelatihan —
hanya bobot backbone konvolusi (4800 parameter) yang disimpan ke
/tmp/backbone_digit.ptolehsrc/pretrained.py. - Tugas B diambil dengan
np.random.default_rng(42)sehinggatransfer.py,dari_nol.py, danbandingkan.pyselalu melihat 30 sampel latih dan 200 sampel uji yang sama. - Statistik normalisasi (mean/deviasi) dihitung dari tugas A — meniru praktik memakai statistik dataset asal model pretrained.
- Citra 8x8 diperbesar ke 16x16 (interpolasi bilinear) agar dua blok max-pooling punya ruang resolusi.
Mengapa bukan model pretrained nyata #
Model seperti torchvision.models.resnet18(weights=...) berukuran puluhan
megabyte dan dirancang untuk masukan 224x224 tiga kanal; melatih head-nya
saja bisa melebihi satu menit di CPU. Alur kerjanya persis sama dengan
proyek ini — muat bobot, bekukan backbone, ganti head, latih head — hanya
sumber bobotnya yang berbeda. Rujukan resmi:
torchvision models
.
Menjalankan ulang #
python3 src/pretrained.py # latih backbone tugas A -> /tmp/backbone_digit.pt
python3 src/transfer.py # muat backbone, bekukan, latih head tugas BBerkas /tmp/backbone_digit.pt dibuat ulang secara otomatis oleh
transfer.py bila belum ada.