def logistic_loss(observed_ratings, predicted_ratings, sample_weights=None): """ Logistic loss for explicit data. Parameters ---------- observed_ratings: tensor Tensor containing observed ratings which should be +1 or -1 for this loss function. predicted_ratings: tensor Tensor containing rating predictions. sample_weights: tensor, optional Tensor containing weights to scale the loss by. Returns ------- loss, float The mean value of the loss function. """ assert_no_grad(observed_ratings) # Convert target classes from (-1, 1) to (0, 1) observed_ratings = torch.clamp(observed_ratings, 0, 1) if sample_weights is not None: loss = F.binary_cross_entropy_with_logits(predicted_ratings, observed_ratings, size_average=False) return _weighted_loss(loss, sample_weights) return F.binary_cross_entropy_with_logits(predicted_ratings, observed_ratings, size_average=True)
def logistic_loss(observed_ratings, predicted_ratings): """ Logistic loss for explicit data. Parameters ---------- observed_ratings: tensor Tensor containing observed ratings which should be +1 or -1 for this loss function. predicted_ratings: tensor Tensor containing rating predictions. Returns ------- loss, float The mean value of the loss function. """ assert_no_grad(observed_ratings) # Convert target classes from (-1, 1) to (0, 1) observed_ratings = torch.clamp(observed_ratings, 0, 1) return F.binary_cross_entropy_with_logits(predicted_ratings, observed_ratings, size_average=True)
def poisson_loss(observed_ratings, predicted_ratings, sample_weights=None): """ Poisson loss. Parameters ---------- observed_ratings: tensor Tensor containing observed ratings. predicted_ratings: tensor Tensor containing rating predictions. sample_weights: tensor, optional Tensor containing weights to scale the loss by. Returns ------- loss, float The mean value of the loss function. """ assert_no_grad(observed_ratings) loss = predicted_ratings - observed_ratings * torch.log(predicted_ratings) return _weighted_loss(loss, sample_weights)
def regression_loss(observed_ratings, predicted_ratings): """ Regression loss. Parameters ---------- observed_ratings: tensor Tensor containing observed ratings. predicted_ratings: tensor Tensor containing rating predictions. Returns ------- loss, float The mean value of the loss function. """ assert_no_grad(observed_ratings) return ((observed_ratings - predicted_ratings)**2).mean()
def poisson_loss(observed_ratings, predicted_ratings): """ Poisson loss. Parameters ---------- observed_ratings: tensor Tensor containing observed ratings. negative_predictions: tensor Tensor containing rating predictions. Returns ------- loss, float The mean value of the loss function. """ assert_no_grad(observed_ratings) return (predicted_ratings - observed_ratings * torch.log(predicted_ratings)).mean()
def regression_loss(observed_ratings, predicted_ratings): """ Regression loss. Parameters ---------- observed_ratings: tensor Tensor containing observed ratings. negative_predictions: tensor Tensor containing rating predictions. Returns ------- loss, float The mean value of the loss function. """ assert_no_grad(observed_ratings) return ((observed_ratings - predicted_ratings) ** 2).mean()