title: PyTorch: RuntimeError: Input, output and indices must be on the current device
body: <p>I am running a BERT model on torch. It's a multi-class sentiment classification task with about 30,000 rows. I have already put everything on cuda, but not sure why I'm getting the following run time error. Here is my code:</p>
  <pre><code>for epoch in tqdm(range(1, epochs+1)):
      
      model.train()
      
      loss_train_total = 0
  
      progress_bar = tqdm(dataloader_train, desc='Epoch {:1d}'.format(epoch), leave=False, disable=False)
      for batch in progress_bar:
  
          model.zero_grad()
          
          batch = tuple(b.to(device) for b in batch)
          
          inputs = {'input_ids':      batch[0],
                    'attention_mask': batch[1],
                    'labels':         batch[2],
                   }       
  
          outputs = model(**inputs)
          
          loss = outputs[0]
          loss_train_total += loss.item()
          loss.backward()
  
          torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
  
          optimizer.step()
          scheduler.step()
          
          progress_bar.set_postfix({'training_loss': '{:.3f}'.format(loss.item()/len(batch))})
           
          
      torch.save(model.state_dict(), f'finetuned_BERT_epoch_{epoch}.model')
          
      tqdm.write(f'\nEpoch {epoch}')
      
      loss_train_avg = loss_train_total/len(dataloader_train)            
      tqdm.write(f'Training loss: {loss_train_avg}')
      
      val_loss, predictions, true_vals = evaluate(dataloader_validation)
      val_f1 = f1_score_func(predictions, true_vals)
      tqdm.write(f'Validation loss: {val_loss}')
      tqdm.write(f'F1 Score (Weighted): {val_f1}')
  
  ---------------------------------------------------------------------------
  RuntimeError                              Traceback (most recent call last)
  &lt;ipython-input-67-9306225bb55a&gt; in &lt;module&gt;()
       17                  }       
       18 
  ---&gt; 19         outputs = model(**inputs)
       20 
       21         loss = outputs[0]
  
  8 frames
  /usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
     1850         # remove once script supports set_grad_enabled
     1851         _no_grad_embedding_renorm_(weight, input, max_norm, norm_type)
  -&gt; 1852     return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
     1853 
     1854 
  
  RuntimeError: Input, output and indices must be on the current device
  </code></pre>
  <p>Any suggestions would be appreciated. Thanks!</p>