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

问题描述 投票:0回答:0

我正在尝试使用迁移学习,从 ResNet50 模型开始,我得到一个 AttributeError,如下所示:

  6     for (x,y) in iterator:
      7         x = x.to(device)
----> 8         y = y.to(device)
      9 
     10         optimizer.zero_grad()

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

这是我的源代码:

def train(model, iterator, optimizer, criterion, scheduler, device):
    epoch_loss = 0
    epoch_acc_1 = 0
    epoch_acc_5 = 0
    model.train()
    for (x,y) in iterator:
        x = x.to(device)
        y = y.to(device)
        
        optimizer.zero_grad()
        y_pred = model(x)
        loss = criterion(y_pred[0], y)
        
        acc_1, acc_5 = calculate_topk_accuracy(y_pred[0],y)
        loss.backward()
        optimizer.step()
        
        epoch_loss += loss.item()
        epoch_acc_1 += acc_1.item()
        epoch_acc_5 += acc_5.item()
        
    epoch_loss /= len(iterator)
    epoch_acc_1 /= len(iterator)
    epoch_acc_5 /= len(iterator)
    return epoch_loss, epoch_acc_1, epoch_acc_5



#learning part
best_valid_loss = float('inf')
EPOCHS = 10
scheduler = schedule
for epoch in range(EPOCHS):
    start_time = time.monotonic()
    
    train_loss, train_acc_1, train_acc_5 = train(model, train_iterator, optimizer, criterion, scheduler, device)
    valid_loss, valid_acc_1, valid_acc_5 = evaluate(model, valid_iterator, criterion, device)
    
    if valid_loss < best_valid_loss:
        best_valid_loss = valid_loss
        torch.save(model.state_dict(),'C:\catanddog\data/ResNet-model.pt')
        
    end_time = time.monotonic()
    epoch_mins, epoch_secs = epoch_time(start_time, end_time)
    
    print(f'Epoch:{epoch+1:02} ¦ Epoch Time : {epoch_mins}m {epoch_secs}s')
    print(f'\tTrain Loss: {train_loss:.3f} ¦ Train Acc @1 : {train_acc_1*100:6.2f}% ¦ ' \
      f'Train Acc @5: {train_acc_5*100:6.2f}%')
    print(f'\tValid Loss: {valid_loss:.3f} ¦ Valid Acc @1 : {valid_acc_1*100:6.2f}% ¦ ' \
      f'Valid Acc @5: {valid_acc_5*100:6.2f}%')

我是一名大学生,这是我的第一个深度学习项目。我以前从未使用过 python 或类似的东西。

我想知道如何解决错误,如果还有其他错误,我也想知道。

python pytorch tuples attributeerror resnet
© www.soinside.com 2019 - 2024. All rights reserved.