Using CNN model, I keep getting this “target is out of bounds” error.
What should I fix? my label has 5 classes.
[my model]

[my code]
epochs = 30
lr = 0.0003
batch_size = 10000
train_idx = np.arange(x_train.size(0))
test_idx = np.arange(x_test.size(0))
optimizer = torch.optim.Adam(model.parameters(),lr)
criterion = nn.CrossEntropyLoss(reduction=‘sum’)
loss_ls = []
for epoch in range(epochs):
model.train()
random.shuffle(train_idx)
x_train = x_train[train_idx]
y_train = y_train[train_idx]
train_loss = 0

for start_idx, end_idx in zip(range(0, x_train.size(0), batch_size),
                              range(batch_size, x_train.size(0)+1, batch_size)):
    
    x_batch = x_train[start_idx : end_idx]
    y_batch = y_train[start_idx : end_idx].long() 
    
    scores = model(x_batch)
    predict = F.softmax(scores, dim=1).argmax(dim = 1)
    
    acc = (predict == y_batch).sum().item() / batch_size
    
    loss = criterion(scores, y_batch)
    train_loss += loss.item()
    
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
print('Train epoch : %s,  loss : %s,  accuracy :%.3f'%(epoch+1, train_loss / batch_size, acc))
print('=================================================================================================')

loss_ls.append(train_loss)

if (epoch+1) % 10 == 0:
    model.eval()
    scores = model(x_test)
    predict = F.softmax(scores, dim=1).argmax(dim = 1)
    
    acc = (predict == y_test.long()).sum().item() / y_test.size(0)
    loss = criterion(scores, y_test.long())
    
    print('*************************************************************************************************')
    print('*************************************************************************************************')
    print('Test Epoch : %s, Test Loss : %.03f , Test Accuracy : %.03f'%(epoch+1, loss.item()/y_test.size(0), acc))
    print('*************************************************************************************************')
    print('*************************************************************************************************')

[error msg]
IndexError                                Traceback (most recent call last)
 in ()
30         acc = (predict == y_batch).sum().item() / batch_size
31
—> 32         loss = criterion(scores, y_batch)
33         train_loss += loss.item()
34
3 frames
/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in nll_loss(input, target, weight, size_average, ignore_index, reduce, reduction)
2113                          .format(input.size(0), target.size(0)))
2114     if dim == 2:
-> 2115         ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
2116     elif dim == 4:
2117         ret = torch._C._nn.nll_loss2d(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
IndexError: Target 5 is out of bounds.