def process(self, sample): for input_key, value in sample[INPUT].iteritems(): if self.tag in input_key: sample[INPUT][input_key] = put_in_the_middle(target_tensor=np.zeros(shape=self.output_shape), data_tensor = value ) return sample
def get_loss_from_lists(self, predicted, expected, *args, **kwargs): expected = put_in_the_middle(np.zeros_like(predicted),expected) y_true_f = expected.flatten() y_pred_f = predicted.flatten() true_positive = np.sum(y_true_f * y_pred_f) false_negative = np.sum(y_true_f * (1.-y_pred_f)) return (true_positive + self.smooth) / (true_positive + false_negative + self.smooth)
def get_loss_from_lists(self, predicted, expected, *args, **kwargs): expected = put_in_the_middle(np.zeros_like(predicted),expected) y_true_f = expected.flatten() y_pred_f = predicted.flatten() true_positive = np.sum(y_true_f * y_pred_f) false_negative = np.sum(y_true_f * (1.-y_pred_f)) false_positive = np.sum((1.-y_true_f) * y_pred_f) recall = (true_positive + self.smooth) / (true_positive + false_negative + self.smooth) precision = (true_positive + self.smooth) / (true_positive + false_positive + self.smooth) return np.minimum(recall*self.recall_weight, 1.0) * 0.5 + np.minimum(precision*self.precision_weight, 1.0) * 0.5
def get_loss_from_lists(self, predicted, expected, *args, **kwargs): expected = put_in_the_middle(np.zeros_like(predicted),expected) y_true_f = expected.flatten() y_pred_f = predicted.flatten() intersection = np.sum(y_true_f * y_pred_f) return (2 * intersection + self.smooth) / (np.sum(y_true_f) + np.sum(y_pred_f) + self.smooth)
def get_loss_from_lists(self, predicted, expected, *args, **kwargs): expected = put_in_the_middle(np.zeros_like(predicted),expected) predicted = np.float32(1-2*self.eps) * predicted + self.eps return -np.mean(expected*np.log(predicted) * self.classweights[1] + (1-expected)*np.log(1-predicted) * self.classweights[0])