
custom metric di keras – terkadang kita butuh sebuah evaluasi atas kinerja deep machine learning sesuai dengan apa kita inginkan. Selama ini kita mengenal ada banyak metrics pengukuran yaitu apa saja??
- Accuracy
- Categorical Accuracy
- Binary Accuracy
- Top K Categorical Accuracy
- Sparse Top K Categorical Accuracy
Kalian baca sendiri saja dokumentasi tersebut disini, Nah bagaimana membuat custom metric di keras sesuai dengan keinginan kita. Kita akan membuat contoh simple saja yaitu logika XOR yang terdiri dari 3 layer dengan jumlah node sebagai berikut
- Layer input terdiri dari 2 node
- layer hidden terdiri dari 10 node
- layer ouput terdiri dari 1 node
Oiya, saya menggunakan tensorflow==2.5.0-rc2 dan keras==2.5.0, kita import kebutuhan librarynya dulu.
import numpy as np import tensorflow as tf from tensorflow import keras
Kita buat sebuah function accuracy dengan metode perhitungan jarak eucleid sebagai berikut
def hitungerror(y_true,y_pred): def f(y_true,y_pred): return np.sqrt(np.power(y_true-y_pred,2)) return tf.numpy_function(f,[y_true,y_pred],tf.float32)
Selanjutnya kita buat model sesuai dengan arsitektur diatas yaitu terdiri dari 3 layer
def get_model(): inputs = keras.Input(shape=(2,)) #karena jumlah nya 2 node hidden = keras.layers.Dense(units=10,activation='relu') (inputs) outputs = keras.layers.Dense(units=1,activation='sigmoid') (hidden) #umlah node 1 model = keras.Model(inputs,outputs) model.compile(optimizer="adam", loss="mean_squared_error",metrics=[hitungerror]) return model
Perhatikan kode metrics=[hitungerror]
telah menggunakan function yang kita buat sendiri! selanjutnya kita buat input dan target berikut
test_input = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) test_target = np.array([0, 1, 1, 0])
Yuk kita panggil modelnya
model = get_model() model.fit(test_input, test_target,epochs=5000,verbose=25) prediksi = model.predict(test_input) print(prediksi)
hasilnya sudah sip mendekati target!
[[0.05020934] [0.9864442 ] [0.98582816] [0.01226526]]
ref:
https://stackoverflow.com/questions/37657260/how-to-implement-custom-metric-in-keras