【问题标题】:AttributeError: 'int' object has no attribute 'view'(1)AttributeError:“int”对象没有属性“view”(1)
【发布时间】:2020-04-22 17:48:58
【问题描述】:

我的代码在下面,我的问题在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))

【问题讨论】:

    标签: python python-3.x image-processing deep-learning enumerate


    【解决方案1】:

    如果你枚举一个列表,你会得到每个项目及其索引作为元组返回 (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
    

    【讨论】:

      【解决方案2】:

      只需替换为这一行:

      for i, data in enumerate(train_loader):

      或者用这一行,如果你不需要索引:

      for data in train_loader:

      【讨论】:

      • 其实我之前做过,但是遇到了另一个问题,比如“ValueError:解包的值太多(预期为 2)”
      猜你喜欢
      • 2020-05-31
      • 2021-11-30
      • 2020-03-26
      • 2013-04-15
      • 2021-01-18
      • 2019-05-30
      • 2021-02-24
      • 2021-08-01
      • 2015-07-06
      相关资源
      最近更新 更多