The line model.fc = nn.Dropout(0.5) seems to make no sense, since it completely changes model.fc from a linear layer with trainable parameters to a layer without trainable parameters (nn.Dropout)
Declare it as another layer:
model.fc = nn.Linear(num_features, 2)
model.dropout = nn.Dropout(0.5)

Or combine the two like this.
model.fc = nn.Sequential(
				nn.Linear(num_features, 2),
				nn.Dropout(0.5)
			)  

And let me know if it has changed.