criterion = nn.BCEWithLogitsLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.0001)
iteration=100

def model_training(model, dataloader,dataset, epoch, device, train=False):
  losses = 0
  corrects = 0

  if train:
    model.train()
    for i, (x, y) in enumerate(dataloader):
      x = x.to(device)
      y = y.to(device)

      x = x.requires_grad_(True)
      x = x.requires_grad_(True)


      optimizer.zero_grad()
      outputs = model(x)
      #_, preds = torch.max(outputs, 1)

      preds = torch.sigmoid(outputs)
      preds = (preds>0.5).float()

      loss = criterion(preds, y)

      # 역전파를 통해 기울기(Gradient) 계산 및 학습 진행
      loss.backward()
      optimizer.step()
     
      losses += loss.item()
      corrects += torch.sum(preds == y).cpu().item()/x.size(0)

      print(torch.sum(preds == y))


    epoch_loss = losses / len(dataset)
    epoch_acc = corrects / len(dataset)
   
    print(f"Train Loss:{epoch_loss}, Accuracy: {epoch_acc}")

  else:
    model.eval()
    with torch.no_grad():
      for i, (x, y) in enumerate(dataloader):
        x = x.to(device)
        y = y.to(device)

        outputs = model(x)
     
        preds = torch.sigmoid(outputs)
        preds = (preds>0.5).float()

        loss = criterion(preds, y)

        losses += loss.item()
        corrects += torch.sum(preds == y).cpu().item()/x.size(0)

    epoch_loss = losses / len(dataset)
    epoch_acc = corrects / len(dataset) * 100
   
    print(f"Validation Loss:{epoch_loss}, Accuracy: {epoch_acc}")

이거 계속해서 accuracy가 0만 찍히는데 뭐가 잘못된건지 모르겠음 loss도 이상하게 엄청 작은 값만 첨부터 출력되는데 어디가 잘못된 건지 알려주세요 ㅜㅜ