Убыток не покрывается в SGD - PullRequest
0 голосов
/ 03 февраля 2019

Я использую потери линейной регрессии PyTorch, и моя потеря SGD не сходится.Вариант использования -

  • Я использую набор данных MNIST и реализую классификацию изображений для классификации рукописных цифр 0 и 1.
  • Затем с использованием модели логистической регрессии: model = nn.Linear(input_size,num_classes)
  • Создана пользовательская функция потерь.
  • Обучение модели, в которой я конвертировал метки из 0,1 в -1,1.Преобразование меток от 0,1 до -1,1
  • Определение потерь.

  total_step = len(train_loader)
    for epoch in range(num_epochs):
       for i, (images, labels) in enumerate(train_loader):
            # Reshape images to (batch_size, input_size)
            images = images.reshape(-1, 28*28) 
            #Convert labels from 0,1 to -1,1
            labels = Variable(2*(labels.float()-0.5))
            # Forward pass
            outputs = model(images)
            # we need maximum value of two class prediction
            oneout = torch.max(outputs.data,1)[0]
            loss = loss_criteria(oneout, labels)       

        # Backward and optimize
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()        

        if (i+1) % 100 == 0:
           print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' 
               .format(epoch+1, num_epochs, i+1, total_step, loss.item()))

Выход потерь: 0,8445,0,6883,0,7976,0,8133,0,8289,0,7195.Как вы заметили, потеря не сходится.Ожидаемый результат: 0,8445,0,8289,0,8133,0,7976,0,7195,0,6883 до нуля ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...