The code looks generally alright.
You could try to remove the sigmoid activation at the end of your model and instead use nn.BCEWithLogitsLoss. This would give you more numerical stability and might avoid vanishing gradients if your output saturates.
Besides that, you should remove the Variable calls, as they are deprecated since 0.4.0.
Also, the usage of .data is not recommended, as this might yield silent errors, since Autogradd cannot track these operations.