def get_loss_train(self): """Calculates (if needed) cross-entropy losses for the training set.""" if self.loss_train is None: if self.logits_train is not None: self.loss_train = utils.log_loss_from_logits( self.labels_train, self.logits_train) else: self.loss_train = utils.log_loss(self.labels_train, self.probs_train) return self.loss_train
def calculate_losses(model, data, labels): """Calculate losses of model prediction on data, provided true labels. Args: model: model to make prediction data: samples labels: true labels of samples (integer valued) Returns: preds: probability vector of each sample loss: cross entropy loss of each sample """ pred = model.predict(data) loss = log_loss(labels, pred) return pred, loss
def get_loss_test(self): """Calculates (if needed) cross-entropy losses for the test set. Returns: Loss (or None if neither the loss nor the labels are present). """ if self.loss_test is None: if self.labels_test is None: return None if self.logits_test is not None: self.loss_test = utils.log_loss_from_logits( self.labels_test, self.logits_test) else: self.loss_test = utils.log_loss(self.labels_test, self.probs_test) return self.loss_test
def calculate_losses(estimator, input_fn, labels): """Get predictions and losses for samples. The assumptions are 1) the loss is cross-entropy loss, and 2) user have specified prediction mode to return predictions, e.g., when mode == tf.estimator.ModeKeys.PREDICT, the model function returns tf.estimator.EstimatorSpec(mode=mode, predictions=tf.nn.softmax(logits)). Args: estimator: model to make prediction input_fn: input function to be used in estimator.predict labels: true labels of samples Returns: preds: probability vector of each sample loss: cross entropy loss of each sample """ pred = np.array(list(estimator.predict(input_fn=input_fn))) loss = log_loss(labels, pred) return pred, loss