My model works fine before, but now I want to use the logarithm of the origin output to calculate the loss. However, the loss becomes inf . I have printed the value of output.abs_().log_() and y.log_() , the are all normal value (no inf), and my loss function is nn. L1Loss() but the loss value is Inf .

So have I missed something or done something wrong? I only want to calculate the L1Loss using the logarithm of the original output.

Hi,

The thing is that if your input goes to `0`

(or very close to it), then the output of the log will be `inf`

. Is that what happens? Maybe you can try adding an epsilon to your input before taking the log to avoid such problem.

1 Like

Thanks for your answer! This is the problem. But the tricky point is when output[0] and y[0] is not zero number ,then the loss is valid number but if some of the output (for example, output[4]) has zero, then the whole loss will be inf, not only the loss[4] is inf .

Yes nans and infinities will propagate.

Unfortunately, you need to be careful when working with functions like log or inverse to avoid have such values.