Python 3.x 属性错误:';列表';对象没有属性';尺寸';在Pytork中进行预测时

Python 3.x 属性错误:';列表';对象没有属性';尺寸';在Pytork中进行预测时,python-3.x,pytorch,Python 3.x,Pytorch,我目前正在加载一个模型和11个输入值。然后我将这11个值输入一个张量,并尝试预测输出。 这是我的密码: # coding: utf-8 # In[5]: import torch import torchvision from torchvision import transforms, datasets import torch.nn as nn import torch.nn.functional as F import torch.utils.data as utils import

我目前正在加载一个模型和11个输入值。然后我将这11个值输入一个张量,并尝试预测输出。 这是我的密码:

# coding: utf-8

# In[5]:


import torch
import torchvision
from torchvision import transforms, datasets
import torch.nn as nn
import torch.nn.functional as F
import torch.utils.data as utils
import numpy as np

data_np = np.loadtxt('input_preds.csv', delimiter=',')




train_ds = utils.TensorDataset(torch.tensor(data_np, dtype=torch.float32).view(-1,11))

trainset = torch.utils.data.DataLoader(train_ds, batch_size=1, shuffle=True)



# setting device on GPU if available, else CPU, replace .cuda() with .to(device)
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        #self.bn = nn.BatchNorm2d(11)
        self.fc1 = nn.Linear(11, 22)
        self.fc2 = nn.Linear(22, 44)
        self.fc3 = nn.Linear(44, 22)
        self.fc4 = nn.Linear(22, 11)

    def forward(self, x):
        #x = x.view(-1, 11)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = F.relu(self.fc3(x))
        x = self.fc4(x)
        #return F.log_softmax(x, dim=1)
        return x
model1 = torch.load('./1e-2')
model2 = torch.load('./1e-3')

for data in trainset:   
        X = data  
        X = X

        output = model1(X).to(device)
        print(output)
然而,我得到了这个错误

Traceback (most recent call last):
  File "inference.py", line 53, in <module>
    output = model1(X).to(device)
  File "C:\Users\Happy\Miniconda3\envs\torch\lib\site-packages\torch\nn\modules\module.py", line 477, in __call__
    result = self.forward(*input, **kwargs)
  File "inference.py", line 40, in forward
    x = F.relu(self.fc1(x))
  File "C:\Users\Happy\Miniconda3\envs\torch\lib\site-packages\torch\nn\modules\module.py", line 477, in __call__
    result = self.forward(*input, **kwargs)
  File "C:\Users\Happy\Miniconda3\envs\torch\lib\site-packages\torch\nn\modules\linear.py", line 55, in forward
    return F.linear(input, self.weight, self.bias)
  File "C:\Users\Happy\Miniconda3\envs\torch\lib\site-packages\torch\nn\functional.py", line 1022, in linear
    if input.dim() == 2 and bias is not None:
AttributeError: 'list' object has no attribute 'dim'
回溯(最近一次呼叫最后一次):
文件“inference.py”,第53行,在
输出=model1(X).to(设备)
文件“C:\Users\Happy\Miniconda3\envs\torch\lib\site packages\torch\nn\modules\module.py”,第477行,在调用中__
结果=自我转发(*输入,**kwargs)
文件“inference.py”,第40行,向前
x=F.relu(自fc1(x))
文件“C:\Users\Happy\Miniconda3\envs\torch\lib\site packages\torch\nn\modules\module.py”,第477行,在调用中__
结果=自我转发(*输入,**kwargs)
文件“C:\Users\Happy\Miniconda3\envs\torch\lib\site packages\torch\nn\modules\linear.py”,第55行,向前
返回F.linear(输入、自重、自偏压)
文件“C:\Users\Happy\Miniconda3\envs\torch\lib\site packages\torch\nn\functional.py”,第1022行,线性
如果input.dim()==2且偏差不是无:
AttributeError:“列表”对象没有属性“dim”

我尝试将批处理转换为numpy数组,但没有帮助。如何解决此错误?谢谢您的帮助。

看起来您的
X
数据
)是一个张量列表,而PyTorch张量是预期的。
发送到模型之前,请尝试
X=torch.stack(X).to(设备)

谢谢您的回复!我尝试实现您的建议,但我得到了以下错误:回溯(最近一次调用last):文件“inference.py”,第45行,在X=torch.Tensor(X)ValueError中:只有一个元素张量可以转换为Python scalars我得到了一个新错误。RuntimeError:应为torch.FloatTensor类型的对象,但为参数#2'mat2'找到了torch.cuda.FloatTensor类型。该模式似乎在GPU上,还需要在GPU上放置数据:
X=torch.stack(X).to(device)
对于这个愚蠢的错误,我深表歉意。我已经习惯了tensorflow编程,在这里您不需要向GPU发送数据。