I fixed learning rate to  0.0000001 and printed the loss values in the loop.
I found out that values of loss is somehow zigzaging positive and negative. It looks weird because I’ve leaned that binary crossentropy doesn’t gives negative value.
and the negative loss values were much greater than positive loss value.
does this mean I am giving the wrong data??
or is it just something to do with hyperparameters?
here are part of the outputs I got

...

tensor(6.9173, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(6.1122, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(7.1797, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(6.8887, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(6.5463, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.6460, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.9631, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(6.4065, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(6.0100, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.5298, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.1861, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(4.7786, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.5828, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.4706, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.6942, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.4059, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.5020, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(6.0613, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.6552, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(5.9129, device='cuda:0', grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-257.4940, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-251.9309, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-497.9838, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-362.6104, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-454.6986, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-897.4257, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-838.2051, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-843.5089, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-823.7191, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-781.8899, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-752.6201, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-602.7383, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-525.3030, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-152.3427, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)
tensor(-209.9590, device='cuda:0',
       grad_fn=<BinaryCrossEntropyWithLogitsBackward>)

...