[Python] IndexError: Target 1 is out of bounds__

Discussão em 'Python' iniciado por Stack, Abril 3, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to write my first code in multi-class classification problem using Pytorch model and this error appeared in training loop. Could you tell me how can I fix this error

    The Model:

    import torch
    from torch import nn

    torch.manual_seed(1234)

    class nn_model(nn.Module):
    def __init__(self):
    super().__init__()
    self.layer1 = nn.Linear(len(X_train.columns), 128)
    self.layer2 = nn.Linear(128, 64)
    self.layer3 = nn.Linear(64, 1)
    self.relu = nn.ReLU()
    self.softmax = nn.Softmax()
    def forward(self, x):
    x = self.relu(self.layer1(x))
    x = self.relu(self.layer2(x))
    x = self.sigmoid(self.layer3(x))
    return x

    model = nn_model()
    model.state_dict()


    used loss function and optimizer:

    optimizer = torch.optim.Adam(lr=0.001, params=model.parameters())

    loss_function = torch.nn.CrossEntropyLoss()


    The training and testing loop:

    epochs = 10000

    for epoch in range(1, epochs + 1):

    # Training loop
    model.train()
    # 1. Do the forward pass

    y_pred = model(torch.tensor(np.array(X_train)).float())

    # 2. Calculate the loss

    loss = loss_function(torch.round(y_pred).float(), torch.tensor(np.array(y_train)).long())

    # 3. Optimizer Zero grad

    optimizer.zero_grad()

    # 4. Loss Backward

    loss.backward()

    # 5. Optimizer Step
    optimizer.step()

    if epoch % 1000 == 0:
    model.eval()
    with torch.inference_mode():

    y_pred_val = model(torch.tensor(np.array(X_cross_val)))

    loss_val = loss_function(torch.round(y_pred_val).long(), torch.tensor(np.array(y_cross_val)).long())


    print(f'Epoch: {epoch} | Loss: {loss_val:4f}')

    Continue reading...

Compartilhe esta Página