You are feeding float64 tensors to the model, which uses float32 parameters so you would have to transform the inputs via x = x.float() before feeding them to the model.
Also, your last non-linearity is F.relu while nn.BCELoss expects probabilities in [0, 1]. I would recommend to remove F.relu and pass the raw logits to nn.BCEWithLogitsLoss instead for a better stability than sigmoid + nn.BCELoss.