BERT Input size reduced to half in forward function 
I was trying to modify your BertForSequenceClassification class for long sequence classification. Like below:

```
class MyBertForSequenceClassification(BertPreTrainedModel):
    def __init__(self, config, num_labels=2, output_attentions=False):
        super(MyBertForSequenceClassification, self).__init__(config)
        self.output_attentions = output_attentions
        self.num_labels = num_labels
        self.bert = BertModel(config)
        self.dropout = nn.Dropout(config.hidden_dropout_prob)
        self.classifier = nn.Linear(config.hidden_size*20, num_labels)
        self.softmax = nn.Softmax()
        self.apply(self.init_bert_weights)

    def forward(self, input_ids, token_type_ids=None, attention_mask=None, labels=None, head_mask=None):
        print(input_ids.shape)  # half of actual passed size
        outputs = self.bert(input_ids, token_type_ids, attention_mask, output_all_encoded_layers=False)
        _, pooled_output = outputs
        pooled_output = self.dropout(pooled_output)
        flat_pooled_output = pooled_output.view(-1)
        print(flat_pooled_output.shape)
        logits = self.classifier(flat_pooled_output)
        logits = self.softmax(logits)
        return logits
```

I found that when I passed the input_ids tensor with dimensions (40, 128) into the model, the actual input_ids I got in the forward function was (20, 128). It always reduce my input to half of original size.  

Maybe you have 2 GPUs?<|||||>@thomwolf Thanks a lot. I forgot I was running on two gpus.  
