OpenAIGPTDoubleHeadsModel Not working (even with the official example...)
Author: rion-o
Pull request: no

## 🐛 Bug

<!-- Important information -->

Model I am using : OpenAI GPT  (DoubleHeadsModel)

Language I am using the model on :  English

The problem arise when using:
* [ ] the official example scripts: [link](https://huggingface.co/transformers/model_doc/gpt.html)
```
tokenizer = OpenAIGPTTokenizer.from_pretrained('openai-gpt')
model = OpenAIGPTDoubleHeadsModel.from_pretrained('openai-gpt')
tokenizer.add_special_tokens({'cls_token': '[CLS]'})  # Add a [CLS] to the vocabulary (we should train it also!)
choices = ["Hello, my dog is cute [CLS]", "Hello, my cat is cute [CLS]"]
input_ids = torch.tensor([tokenizer.encode(s) for s in choices]).unsqueeze(0)  # Batch size 1, 2 choices
mc_token_ids = torch.tensor([input_ids.size(-1), input_ids.size(-1)]).unsqueeze(0)  # Batch size 1
outputs = model(input_ids, mc_token_ids=mc_token_ids)
lm_prediction_scores, mc_prediction_scores = outputs[:2]
```
This codes doesn't work.
Maybe need to add `model.resize_token_embeddings(len(tokenizer))`
However, it still doesn't work with the following error
```
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-20-53e79c250ad3> in <module>
      7 input_ids = torch.tensor([tokenizer.encode(s) for s in choices]).unsqueeze(0)  # Batch size 1, 2 choices
      8 mc_token_ids = torch.tensor([input_ids.size(-1), input_ids.size(-1)]).unsqueeze(0)  # Batch size 1
----> 9 outputs = model(input_ids, mc_token_ids=mc_token_ids)
     10 lm_prediction_scores, mc_prediction_scores = outputs[:2]

/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
    539             result = self._slow_forward(*input, **kwargs)
    540         else:
--> 541             result = self.forward(*input, **kwargs)
    542         for hook in self._forward_hooks.values():
    543             hook_result = hook(self, input, result)

/usr/local/lib/python3.6/dist-packages/transformers/modeling_openai.py in forward(self, input_ids, attention_mask, token_type_ids, position_ids, head_mask, mc_token_ids, lm_labels, mc_labels)
    603 
    604         lm_logits = self.lm_head(hidden_states)
--> 605         mc_logits = self.multiple_choice_head(hidden_states, mc_token_ids).squeeze(-1)
    606 
    607         outputs = (lm_logits, mc_logits) + transformer_outputs[1:]

/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
    539             result = self._slow_forward(*input, **kwargs)
    540         else:
--> 541             result = self.forward(*input, **kwargs)
    542         for hook in self._forward_hooks.values():
    543             hook_result = hook(self, input, result)

/usr/local/lib/python3.6/dist-packages/transformers/modeling_utils.py in forward(self, hidden_states, cls_index)
    728                 cls_index = cls_index.expand((-1,) * (cls_index.dim()-1) + (hidden_states.size(-1),))
    729             # shape of cls_index: (bsz, XX, 1, hidden_size) where XX are optional leading dim of hidden_states
--> 730             output = hidden_states.gather(-2, cls_index).squeeze(-2) # shape (bsz, XX, hidden_size)
    731         elif self.summary_type == 'attn':
    732             raise NotImplementedError

RuntimeError: Invalid index in gather at /pytorch/aten/src/TH/generic/THTensorEvenMoreMath.cpp:657
```

## Environment

* OS: Linux
* Python version: 3.6
* PyTorch version: 1.3
* Using GPU ? yes




Comments:
Indeed thanks, fixed