hi,
i have a classification mission with sequence data and i made a neural network for it but its loss isn’t changing during the epochs…
class Main:
    def __init__(self):
        self.batch_size = 10
        self.model = Net()

    def evaluate(self):
        trues = []
        preds = []
        loss_sum = 0
        loss_function = nn.MSELoss()
        with torch.no_grad():
            for batch_idx, (x, y) in enumerate(train_loader):
                if y.shape[1] == 1:
                    continue

                p = self.model(x)

                p = torch.argmax(p, dim=1).type(torch.float32)
                y = torch.squeeze(y.type(torch.float32))

                loss_sum += loss_function(p, y)
                trues += y
                preds += p
        print('loss =', loss_sum)
        print('accu =', accuracy_score(trues, preds))

    def train(self):
        loss_function = nn.MSELoss()
        optimizer = optim.Adam(self.model.parameters())
        self.model.zero_grad()

        for epoch in range(8):
            los_sum = 0
            for batch_idx, (x, y) in enumerate(train_loader):
                if y.shape[1] == 1:
                    continue

                self.model.zero_grad()

                p = self.model(x)

                p = torch.argmax(p, dim=1).type(torch.float32).requires_grad_(True)
                y = torch.squeeze(y.type(torch.float32))

                loss = loss_function(p, y)

                loss.backward()
                optimizer.step()

                los_sum += loss.item()

            if epoch % 1 == 0:
                print(epoch, 'train loss', los_sum)
                self.evaluate()

where arch is the folowing:
class Net(nn.Module):

    def __init__(self):
        super(Net, self).__init__()
        self.lstm = nn.LSTM(len(REL_FEATURES), round(len(REL_FEATURES)/2), num_layers=2, batch_first=True)
        self.hidden2temp = nn.Linear(round(len(REL_FEATURES)/2), 11)

    def forward(self, x):
        week_size = x.shape[1]
        # print('1', x.shape)
        lstm_out, _ = self.lstm(x)  # .view(len(sentence), 1, -1)
        # print('2', lstm_out.shape)
        temp_prob = self.hidden2temp(lstm_out.view(week_size, -1))
        # print('3', temp_prob.shape)
        return temp_prob

i get that output:

0 train loss 1515.3066632635891
loss = tensor(1515.3066)
accu = 0.054489694030383
1 train loss 1515.3066632635891
loss = tensor(1515.3063)
accu = 0.054489694030383
2 train loss 1515.3066632635891
loss = tensor(1515.3064)
accu = 0.054489694030383
3 train loss 1515.3066632635891
loss = tensor(1515.3064)
accu = 0.054489694030383
4 train loss 1515.3066632635891
loss = tensor(1515.3066)
accu = 0.054489694030383

what am i doing wrong?
thanks.