Tugas 3 Praktikum Sains Data 2024 Genap: Klasifikasi Gambar dengan Neural Network
Kembali ke Sains Data
Petunjuk Umum
Kerjakan secara individu.
Kerjakan tugas ini menggunakan bahasa pemrograman Python dengan file format berupa interactive Python notebook (yaitu file berbentuk .ipynb BUKAN .py), yang bisa dibuat misalnya menggunakan Jupyter Notebook atau Google Colaboratory.
Harap sertakan penjelasan untuk setiap proses secara singkat di samping potongan kode (bisa dengan teks / text box maupun dengan comment, ‘#’).
Format nama file untuk Tugas 3 adalah:
Nama Lengkap_NPM_Kelas SIAK_Tugas3PrakSaindat.ipynb
Contoh penamaan yang benar:
Yann André LeCun_2201234567_Kelas C_Tugas3PrakSaindat.ipynb
Untuk mengumpulkan lebih dari satu file, gunakan
.zip
dengan format nama yang sama (dan file.ipynb
yang di dalamnya juga masih menggunakan format nama yang sama).Apabila ada yang ingin direvisi setelah pengumpulan, lakukan pengumpulan ulang di Google Forms yang sama, tambahkan keterangan bahwa ada revisi, dan tambahkan kata “revisi” pada bagian akhir nama file, contohnya menjadi
Yann André LeCun_2201234567_Kelas C_Tugas3PrakSaindat_revisi.ipynb
Yann André LeCun_2201234567_Kelas C_Tugas3PrakSaindat_revisi2.ipynb
Yann André LeCun_2201234567_Kelas C_Tugas3PrakSaindat_revisi3.ipynb
(tentunya gunakan
.zip
kalau ada lebih dari satu file yang ingin dikumpulkan)(Revisi boleh dilakukan berkali-kali selama masa pengerjaan.)
Pengumpulan tugas dilakukan ke Google Forms berikut ini, sesuai dengan kelas Anda di SIAK NG (link akan selalu sama untuk semua tugas praktikum Sains Data):
Kelas A: https://forms.gle/TdxprAuySMAWt5NR7
Kelas B: https://forms.gle/bk2LBnowfZhmw5qY9
Dengan durasi pengerjaan sekitar 3 (tiga) minggu, tenggat waktu (deadline) pengumpulan Tugas 3 ini (termasuk revisi) adalah:
Sabtu, 8 Juni 2024, pukul 23.59 WIB.
Mohon manfaatkan waktu Anda dengan baik (seperti mencicil pengerjaan, bahkan sudah selesai dari jauh-jauh hari) agar mengumpulkan tugas sebelum deadline. Keterlambatan pengumpulan bisa dikenakan pengurangan nilai atau bahkan dianggap tidak mengumpulkan, tergantung kesepakatan dari dosen. Meskipun demikian, lebih baik terlambat mengumpulkan daripada tidak mengumpulkan sama sekali.
Sesuai standar Universitas Indonesia, plagiarisme dilarang keras dan bisa menyebabkan nilai tugas praktikum menjadi nol untuk semua pihak yang terlibat, tanpa peringatan apapun. Namun, Anda boleh memanfaatkan kode apapun yang ada di modul praktikum.
Narahubung untuk Tugas 3 Praktikum Sains Data adalah:
Rifki - LINE: rifkyprakasya_
Bisma - LINE: bisma_joyosumarto
Soal
Tugas 3 ini terdiri dari soal a-e.
Di beberapa praktikum terakhir, kalian sudah mempelajari tentang neural network, baik menggunakan TensorFlow & Keras maupun menggunakan PyTorch. Untuk melatih apa yang telah kalian pelajari, mari kita coba contoh kasus yang sempat mengguncang dunia: klasifikasi gambar bilangan/digit 0-9 (dengan dataset MNIST) menggunakan neural network.
Untuk tugas ini, kalian dibebaskan memilih antara menggunakan TensorFlow & Keras atau menggunakan PyTorch. Pilihlah salah satu.
Kemudian, lakukan end-to-end machine learning, atau lebih tepatnya end-to-end classification, yang meliputi:
Perolehan data
Apabila kalian menggunakan TensorFlow & Keras, kalian bisa memperoleh dataset MNIST dengan kode seperti berikut:
mnist = keras.datasets.mnist (X_train, y_train), (X_test, y_test) = mnist.load_data()
Namun, jika kalian menggunakan PyTorch, kalian bisa memperoleh objek
Dataset
untuk dataset MNIST dengan kode seperti berikut:mnist_train = torchvision.datasets.MNIST( root = "./mnist_data", # folder tempat download train = True, # data training download = True, # karena belum ada # agar file gambar otomatis diubah menjadi tensor transform = torchvision.transforms.ToTensor() ) mnist_test = torchvision.datasets.MNIST( root = "./mnist_data", # folder yang sama untuk tempat download train = False, # bukan data training download = True, transform = torchvision.transforms.ToTensor() )
Setelah memperolehnya, terlepas apakah kalian menggunakan TensorFlow & Keras atau PyTorch, kalian bisa mempertimbangkan bagaimana cara memperoleh data validation: apakah dari data training atau dari data testing, atau bahkan data testing langsung dianggap data validation.
Untuk PyTorch, jangan lupa mengubahnya menjadi
DataLoader
juga.Langkah preprocessing yang sekiranya diperlukan, kalau ada.
Training: buatlah model neural network menggunakan framework yang telah Anda pilih (yaitu antara Tensorflow & Keras atau PyTorch) untuk menyelesaikan masalah klasifikasi gambar tersebut.
Anda dibebaskan untuk memilih hyperparameter seperti
susunan arsitektur (berkreasilah!): banyaknya hidden layer, banyaknya neuron di tiap layer, dan fungsi aktivasi di tiap layer;
optimizer;
learning rate;
banyaknya epoch; dan
batch size.
Lakukan training, simpanlah history dari training loss serta validation loss ke dalam file
mymodel_loss_hist.csv
, lalu tampilkan plot training loss dan validation loss terhadap epoch.Tidak ada larangan apabila Anda ingin melakukan hyperparameter tuning, yaitu mencoba beberapa pilihan hyperparameter (misalnya mencoba beberapa arsitektur) kemudian memilih model dengan performa terbaik.
Simpan juga weights dari model Anda, yaitu ke dalam file
mymodel.weights.h5
untuk TensorFlow & Keras, atau ke dalam filemymodel.pth
untuk PyTorch.
Mencoba prediksi: menggunakan model tersebut, lakukan prediksi kelas untuk beberapa gambar yang ada di data testing, dan bandingkan dengan kelas aslinya. (Anda boleh juga menampilkan hasil prediksi kelas dari gambar menggunakan slider seperti yang ada di modul praktikum).
Evaluasi model: untuk model neural network yang telah Anda buat, tampilkan/hitunglah metrik evaluasi untuk klasifikasi, misalnya menampilkan confusion matrix atau menghitung Jaccard score.