Training Data
Pada part sebelumnya kita telah menyiapkan dataset yang dibutuhkan dan mengubahnya menjadi bentuk kumpulan array agar dapat dipelajari oleh mesin. Sekarang kita akan membuat Model Neural Network kita sendiri sekaligus mempelajarinya.
Modeling
Di dalam Model Neural Network terdapat layer-layer yang memiliki berbagai macam fungsi. Untuk awalan kita akan mencoba membuat Model yang sederhana untuk menjadi acuan pada analisis berikutnya.
Kita akan membuat Model dengan Model Sequential
dan 3 macam layer yaitu, GlobalAveragePooling2D
, Dense
, dan Dropout
. Masing-masing layer tersebut memiliki fungsi yang berbeda, untuk lebih jelasnya bisa kamu pelajari disini.
Import Model Sequential
dan Layer-layer yang dibutuhkan.
from keras.models import Sequential
from keras.layers import GlobalAveragePooling2D, Dense, Dropout
Lalu deklarasikan model yang akan dibuat.
model = Sequential()
Dari model tersebut bisa kita tambahkan layer-layer yang dibutuhkan.
model.add(Dense(64, activation='relu', input_shape=(224, 224, 3)))
model.add(GlobalAveragePooling2D())
model.add(Dropout(0.5))
model.add(Dense(32, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(3, activation='softmax'))
Untuk layer pertama harus kita tambahkan input_shape
sebagai pintu masuk data yang akan dilatih. Parameter input_shape
ini harus sesuai dengan bentuk data yang akan dilatih.
Activation yang digunakan pada model awal kita hanya 'relu'
dan 'softmax'
sebagai layer output.
Layer Output yang diletakan paling akhir sebaiknya memiliki unit yang sesuai dengan data yang kita butuhkan. Pada kasus kali ini kita membutuhkan 3 class (batu, gunting, dan kertas), maka diberikanlah 3 Units pada Layer Dense.
Setelah kita mengisi model dengan layer-layer, kita dapat melihat Neural Network kita secara keseluruhan dengan fungsi :
model.summary()
Maka akan muncul keluaran seperti ini.
Compiling Model
Setelah rancangan model berhasil dibuat, sekarang kita akan menyusun model tersebut.
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
Pilihan untuk parameter loss
dan optimizer
saat menyusun model ada banyak dan dapat dilihat pada link berikut ini.
Untuk loss
kita akan menggunakan 'categorical_crossentropy'
karena data yang kita latih akan mengeluarkan output 3 class, dan kita akan mencoba menggunakan 'adam'
sebagai optimizernya.
Fitting Model / Model Training
Setelah menyusun model, kita akan melatih model kita dengan dataset yang telah kita siapkan.
Kita akan memasukan proses pembelajaran model kita ke dalam variabel history
.
history = model.fit(
train_image,
validation_data=val_image,
epochs=10
)
Dengan menggunakan model.fit()
maka Keras akan melakukan training data secara otomatis, kita perlu memberikan train_image
sebagai data yang akan dilatih, val_image
sebagai data untuk validasi, dan parameter epochs
yaitu jumlah pembelajaran yang akan dilakukan.
Keluaran dibawah adalah hasil dari pembelajaran yang dilakukan oleh model kita.
Analisa
Untuk menganalisa model kita dapat memanfaatkan plot untuk menggunakan grafik agar lebih mudah.
import numpy as np
import matplotlib.pyplot as plt
Kita dapat menggunakan variabel history[]
untuk mengambil data dari proses pembelajaran sebelumnya.
def show_final_history(history):
fig, ax = plt.subplots(1, 2, figsize=(15,5))
ax[0].set_title('loss')
ax[0].plot(history.epoch, history.history["loss"], label="Train loss")
ax[0].plot(history.epoch, history.history["val_loss"], label="Validation loss")
ax[1].set_title('acc')
ax[1].plot(history.epoch, history.history["accuracy"], label="Train acc")
ax[1].plot(history.epoch, history.history["val_accuracy"], label="Validation acc")
ax[0].legend()
ax[1].legend()
Fungsi diatas akan mengeluarkan grafik dari loss
dan accuracy
sekaligus validasinya.
Dari data diatas, kita dapat menyimpulkan bahwa model yang kita buat masih kurang bagus, tetapi terdapat proses dalam setiap epochs. Mungkin dengan menambah jumlah epochs
akan membuat accuracy
semakin bagus, tetapi tentunya akan membutuhkan waktu lebih banyak.
Part selanjutnya kita akan mencoba membuat model dengan menggunakan salah satu Model Application, yaitu VGG16. Apa itu VGG16? dan bagaimana cara menggunakannya? Akan kita bahas di part selanjutnya :3