fastbook icon indicating copy to clipboard operation
fastbook copied to clipboard

BCEWithLogitsLossFlat and BCEWithLogitsLoss

Open kfkelvinng opened this issue 2 years ago • 0 comments

I tried to understand the difference, but they are almost identical in term of behaviour. In the documentation https://docs.fast.ai/losses.html#bcewithlogitslossflat, nn.BCEWithLogitsLoss suppose to fail but it doesn't.

tst = BCEWithLogitsLossFlat()
output = torch.randn(32, 5, 10)
target = torch.randn(32, 5, 10)
#nn.BCEWithLogitsLoss would fail with those two tensors, but not our flattened version.
_ = tst(output, target)
test_fail(lambda x: nn.BCEWithLogitsLoss()(output,target))

The correct test should be:

test_fail(lambda: nn.BCEWithLogitsLoss()(output,target))

instead of

test_fail(lambda x: nn.BCEWithLogitsLoss()(output,target))

In contrast to https://docs.fast.ai/losses.html#crossentropylossflat, the nn.CrossEntropyLoss fail but the test is misleading.

kfkelvinng avatar May 17 '23 12:05 kfkelvinng