Я получаю ошибку атрибута, поскольку объект int не имеет атрибута to - PullRequest
0 голосов
/ 06 мая 2020

Я пишу код python в блокноте Kaggle для классификации изображений. В обучающей части я получаю сообщение об ошибке

AttributeError                            Traceback (most recent call last)
<ipython-input-22-052723d8ce9d> in <module>
      5     test_loss = 0.0
      6     for images,label in enumerate(train_loader):
----> 7         images,label = images.to(cuda),label.to(cuda)
      8         optimizer.zero_grad()
      9 

AttributeError: 'int' object has no attribute 'to'

Это следующий код (я даю только 2 части, пожалуйста, сообщите, если вам нужно больше)

train_loader = torch.utils.data.DataLoader(train_data,batch_size = 128,num_workers =0,shuffle =True)
test_loader = torch.utils.data.DataLoader(test_data,batch_size = 64,num_workers =0,shuffle =False)


epoch = 10

for e in range(epoch):
    train_loss = 0.0
    test_loss = 0.0
    for images,label in enumerate(train_loader):
        images,label = images.to(cuda),label.to(cuda)
        optimizer.zero_grad()

        output = model(images)
        _,predict = torch.max(output.data, 1)
        loss = criterion(output,labels)
        loss.backward()
        optimizer.step()

        train_loss += loss.item()
        train_size += label.size(0)
        train_success += (predict==label).sum().item()


        print("train_accuracy is {.2f}".format(100*(train_success/train_size)) )

1 Ответ

1 голос
/ 06 мая 2020

Я мало знаю о среде, в которой вы работаете, но вот что идет не так:

for images, label in enumerate (train_loader): Помещает все, что находится в train_loader, в label, а images дается число.

Попробуйте это, чтобы понять, что я имею в виду, и увидеть, что идет не так:

for images, label in enumerate(train_loader):
    print(images)
    return

И поскольку images - это число (int), нет images.to() метод, связанный с images

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