You are rewrapping the input in a new tensor, which will break the computation graph and thus your input won’t get any gradients in this line of code:
model.feature_extractor(torch.tensor(x.view(1, -1)))

Use this instead and it should work:
model.feature_extractor((x.view(1, -1))

You should also get a UserWarning for the first use case:
UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
  return model.feature_extractor(torch.tensor(x.view(1, -1)))