I am getting wrong values of weighted loss in C1M1_Assignment.
Here is my code :
# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)
def get_weighted_loss(pos_weights, neg_weights, epsilon=1e-7):
"""
Return weighted loss function given negative weights and positive weights.
Args:
pos_weights (np.array): array of positive weights for each class, size (num_classes)
neg_weights (np.array): array of negative weights for each class, size (num_classes)
Returns:
weighted_loss (function): weighted loss function
"""
#−(wpylog(f(x))+wn(1−y)log(1−f(x))).
def weighted_loss(y_true, y_pred):
"""
Return weighted loss value.
Args:
y_true (Tensor): Tensor of true labels, size is (num_examples, num_classes)
y_pred (Tensor): Tensor of predicted labels, size is (num_examples, num_classes)
Returns:
loss (float): overall scalar loss summed across all classes
"""
# initialize loss to zero
loss = 0.0
### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###
for i in range(len(pos_weights)):
# for each class, add average weighted loss for that class
loss += -(pos_weights[i]*y_true*K.log(y_pred)+neg_weights[i]*(1-y_true)*K.log(1-y_pred)+epsilon)
return K.mean(loss)
### END CODE HERE ###
return weighted_loss
Can someone help where I am making mistake ?
Thanks.