Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- labels = ["dog", "mammal", "cat", "fish", "rock"] #I have more
- interesting_id = [0]*len(labels)
- interesting_id[labels.index("rock")] = 1 #we only care about rock's accuracy
- def single_class_accuracy(interesting_class_id):
- def single(y_true, y_pred):
- class_id_true = K.argmax(y_true, axis=-1)
- class_id_preds = K.argmax(y_pred, axis=-1)
- # Replace class_id_preds with class_id_true for recall here
- accuracy_mask = K.cast(K.equal(class_id_preds, interesting_class_id), 'float32')
- class_acc_tensor = K.cast(K.equal(class_id_true, class_id_preds), 'float32') * accuracy_mask
- class_acc = K.sum(class_acc_tensor) / K.maximum(K.sum(accuracy_mask), 1)
- return class_acc
- return single
- model.compile(optimizer=SGD(lr=0.0001, momentum=0.9),
- loss='binary_crossentropy', metrics=[metrics.binary_accuracy,
- single_class_accuracy(interesting_id)])
Add Comment
Please, Sign In to add comment