You are detaching the computation graph by calling torch.argmax on the model output as this operation is not differentiable:
torch.argmax(outputs,axis=1).float()

nn.BCCEWithLogitsLoss expects logits as the model output and can be used for a multi-label classification (zero, one, or more classes can be active for each sample).
This would also mean that you should remove the softmax operation in your model.