| import numpy as np | |
| from src.logger import get_logger | |
| logger = get_logger(__name__) | |
| def detect_unknown( | |
| probabilities, | |
| threshold=0.60 | |
| ): | |
| """ | |
| Detect whether prediction | |
| should be considered unknown. | |
| Parameters | |
| ---------- | |
| probabilities : ndarray | |
| Softmax output | |
| threshold : float | |
| Minimum confidence required | |
| Returns | |
| ------- | |
| bool | |
| """ | |
| confidence = float( | |
| np.max(probabilities) | |
| ) | |
| logger.info( | |
| f"Max confidence: {confidence:.4f}" | |
| ) | |
| return confidence < threshold | |
| def calculate_entropy( | |
| probabilities | |
| ): | |
| """ | |
| Measures uncertainty. | |
| Higher entropy means | |
| more uncertainty. | |
| """ | |
| probs = probabilities[0] | |
| return -np.sum( | |
| probs * | |
| np.log(probs + 1e-10) | |
| ) |