首页 > 解决方案 > AttributeError:“int”对象没有属性“view”(1)

问题描述

我的代码在下面,我的问题在input_gray = input_gray.view(batch_size,1,64,32). 由于我使用了 enumerate,我猜我遇到了问题,但不知道如何解决它,我需要你的帮助,谢谢。

for epoch in range(epochs):
    # Train for one epoch, then validate
    train(train_loader, model, criterion, optimizer, epoch)
    correct=0
    total=0

    with torch.no_grad():
        losses = validate(val_loader, model, criterion, save_images, epoch)
        for data in enumerate(train_loader):
            input_gray, labels = data
            input_gray = input_gray.view(batch_size,1,64,32)
            input_gray = input_gray.float()

        if use_gpu:
            input_gray, labels = input_gray.to.cuda(), labels.to.cuda()

        output_ab = model(input_gray)
        _, predicted = torch.max(output_ab.data,1)
        total+=labels.size()
        correct+=(predicted==labels).sum().item()

    print("Accuracy train %d %%"%(100*correct/total))
    train_acc.append(100*correct/total)    

    # Save checkpoint and replace old best model if current model is better   
    if losses < best_losses:
        best_losses = losses
        torch.save(model.state_dict(), 'checkpoints/model-epoch-{}-losses-{:.3f}.pth'.format(epoch+1,losses))

标签: pythonpython-3.ximage-processingdeep-learningenumerate

解决方案


如果你枚举一个列表,你会得到每个项目及其索引作为元组返回(index,item)

class something:
    def __init__(self,prop1,prop2):
        self.prop1=prop1
        self.prop2=prop2

l = [something(1,"a"),something(2,"b")]


for k in enumerate(l):
    index, data = k              # so k is a tuple of (index,item) - you can deref it

    print(index)                 

    # you can access the items properties like so:
    print(data.prop1, data.prop2) 

输出:

0
1 a
1
2 b

您的代码可能需要:

for data in enumerate(train_loader):
     index, (input_gray, labels) = data

推荐阅读