Given two raw logit vectors p and q, I would like to calculate -(P-Q)*log((1-P)/(1-Q)), which is equals to KL(1-P||1-Q) + KL(1-Q||1-P), where P/Q is the probability distribution of p/q after softmax().
Here is my code:

-(F.softmax(p, dim=1) - F.softmax(q, dim=1)) * torch.log((1.0001 - F.softmax(p, dim=1)) / (1.0001 - F.softmax(q, dim=1)))

but it turns out to be numerical unstable. How can I fix it?