Hi, I am getting error while training model for token classification
from torch.utils.data import DataLoader
from transformers import DistilBertForTokenClassification, AdamW
device = torch.device(‘cuda’) if torch.cuda.is_available() else torch.device(‘cpu’)
model = DistilBertForTokenClassification.from_pretrained(‘distilbert-base-uncased’)
model.to(device)
model.train()
train_loader = DataLoader(train_dataset, batch_size=16, shuffle=True)
optim = AdamW(model.parameters(), lr=5e-5)
for epoch in range(3):
for batch in train_loader:
optim.zero_grad()
input_ids = batch[‘input_ids’].to(device)
attention_mask = batch[‘attention_mask’].to(device)
labels = batch[‘labels’].to(device)
outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
loss = outputs[0]
loss.backward()
optim.step()
model.eval()
Error:
IndexError                                Traceback (most recent call last)
 in 
18         attention_mask = batch[‘attention_mask’].to(device)
19         labels = batch[‘labels’].to(device)
—> 20         outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
21         loss = outputs[0]
22         loss.backward()
~\Anaconda3\lib\site-packages\torch\nn\modules\module.py in _call_impl(self, *input, **kwargs)
1049         if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks
1050                 or _global_forward_hooks or _global_forward_pre_hooks):
 → 1051             return forward_call(*input, **kwargs)
1052         # Do not call functions when jit is used
1053         full_backward_hooks, non_full_backward_hooks = [], []
~\Anaconda3\lib\site-packages\transformers\models\distilbert\modeling_distilbert.py in forward(self, input_ids, attention_mask, head_mask, inputs_embeds, labels, output_attentions, output_hidden_states, return_dict)
838                     active_loss, labels.view(-1), torch.tensor(loss_fct.ignore_index).type_as(labels)
839                 )
 → 840                 loss = loss_fct(active_logits, active_labels)
841             else:
842                 loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1))
~\Anaconda3\lib\site-packages\torch\nn\modules\module.py in _call_impl(self, *input, **kwargs)
1049         if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks
1050                 or _global_forward_hooks or _global_forward_pre_hooks):
 → 1051             return forward_call(*input, **kwargs)
1052         # Do not call functions when jit is used
1053         full_backward_hooks, non_full_backward_hooks = [], []
~\Anaconda3\lib\site-packages\torch\nn\modules\loss.py in forward(self, input, target)
1118
1119     def forward(self, input: Tensor, target: Tensor) → Tensor:
 → 1120         return F.cross_entropy(input, target, weight=self.weight,
1121                                ignore_index=self.ignore_index, reduction=self.reduction)
1122
~\Anaconda3\lib\site-packages\torch\nn\functional.py in cross_entropy(input, target, weight, size_average, ignore_index, reduce, reduction)
2822     if size_average is not None or reduce is not None:
2823         reduction = _Reduction.legacy_get_string(size_average, reduce)
 → 2824     return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
2825
2826
IndexError: Target 4 is out of bounds.