使用 Pytorch 进行图像分类

Image classification Using Pytorch

这是我使用 Pytorch 进行图像分类的代码,但我无法获得正确的准确性。 准确率超过100,谁能帮我找出错误。

     def trained_model(criterion, optimizer, epochs=5):

      epoch_loss = 0.0
      epoch_accuracy = 0
      running_loss = 0
      running_accuracy = 0
      total = 0

      for epoch in range(epochs):
        print('epoch : {}/{}'.format(epoch+1, epochs))

        for images, labels in train_loader:
          images, labels = images.to(device), labels.to(device)

          optimizer.zero_grad()

          outputs = model(images)
          loss = criterion(outputs, labels)

          _, predictions = torch.max(outputs, dim=1)

          loss.backward()
          optimizer.step()

          running_loss += loss.item()

          running_accuracy += torch.sum(predictions == labels.data)
          


        epoch_loss = running_loss / len(train_dataset)
        epoch_accuracy = running_accuracy / len(train_dataset)

        print('Loss:{:.4f} , Accuracy : {:.4f} '.format(epoch_loss, epoch_accuracy))

      return model

您可能应该使用 torch.argmax 从模型输出中获取 class 预测,而不是 torch.max

假设您使用索引作为标签。像下面这样的东西会让你得到当前批次的平均准确度:

>>> outputs = torch.rand(16, 5)

>>> pred = torch.argmax(outputs, axis=0)
tensor([14, 11, 13, 15,  7])

>>> labels = torch.tensor([14, 6, 13, 5, 8])

>>> accuracy = (pred == labels).float().mean()
tensor(0.4000)