class StableBCELoss(nn.modules.Module):
def __init__(self):
super(StableBCELoss, self).__init__()
def forward(self, input, target):
neg_abs = - input.abs()
loss = input.clamp(min=0) - input * target + (1 + neg_abs.exp()).log()
return loss.mean()
\[ L(y,x) = -y \cdot log(sigmoid(x))-(1-y) \cdot log(1-sigmoid(x))\]
\[ sigmoid(x) = \frac {1} {1+e^{-x}} \]
neg_abs = - input.abs()
loss = input.clamp(min=0) - input * target + (1 + neg_abs.exp()).log()
\[ p_k = \frac {e^{x_k}} {\sum e^{x_i}}\]
\[ p_k = \frac {e^{(x_k-max)}} {\sum e^{(x_i-max)}}\]