Why does loss function does not update? Is there something wrong with the code?
Thank you
iris_dataset = datasets.load_iris()
X = iris_dataset[‘data’]
Y = iris_dataset[‘target’]
 #create test and train sets
 X_train, X_test, y_train, y_test = sk.model_selection.train_test_split(X, Y, test_size=0.2, random_state=42)

feat_x_train = torch.from_numpy(X_train)
feat_y_train = torch.from_numpy(y_train)

feat_x_test = torch.from_numpy(X_test)
feat_y_test = torch.from_numpy(y_test)

x_data_train = Variable(torch.Tensor(X_train)).float()
y_data_train = Variable(torch.Tensor(y_train)).type(torch.LongTensor)

#logistic regression
class LogisticRegress(nn.Module):
   def __init__(self,inp,out):
      super(LogisticRegress,self).__init__()
      self.linear = nn.Linear(inp,out)
    
    
    def forward(self,x):
        #sigmoid = torch.nn.Sigmoid()
        out = F.sigmoid(self.linear(x))
        return out

#logistic model
#4 features and 3 outputs
model = LogisticRegress(4,3)
#Loss Function
loss = nn.CrossEntropyLoss()
#have a look at model parameters
for param in model.parameters():
print(param)
#optimizer
optim = torch.optim.Adam(model.parameters(), lr=0.01)
#Train the model
  loss_list = []
  count_list = []
  count = 0
  num_epochs = 2000
  for epoch in range(num_epochs):



        y_pred = model(x_data_train)
       _loss = loss(y_pred,y_data_train)
       #print(epoch,_loss.data[0])

      optimizer.zero_grad()
      _loss.backward()
      optimizer.step()

      loss_list.append(_loss.data)
      count_list.append(count)

if epoch % 100 == 0:
    print('Epoch [%d/%d] Loss: %.4f' %(epoch + 1, num_epochs, _loss.data[0]))