为什么我在pytorch中训练我的模型时会遇到问题



我是PyTorch和AI的新手,但在尝试训练我的模型时遇到了一些麻烦。

我只是创建了我的DatasetDataloader

train_dataset = TensorDataset(tensor_train,tensor_label)
train_dataloader = DataLoader(train_dataset,batch_size=32,shuffle=True)

在这之后,我的标准和优化器

criterion = nn.CrossEntropyLoss()
optimiser=optim.Adam(net.parameters(),lr=0.2)

我试着用训练它

for epoch in range(10):
for data in train_dataloader:
inputs,labels = data
output = net(torch.Tensor(inputs))
loss = criterion(output,labels.to(device))
optimiser.zero_grad()
loss.backward()
optimiser.step()

但是我得到了这个错误

d:pylibsite-packagestorchnnmodulesmodule.py in <lambda>(t)
321             Module: self
322         """
--> 323         return self._apply(lambda t: t.type(dst_type))
324 
325     def float(self):
TypeError: dtype must be a type, str, or dtype object

如果有人发现问题,我会很高兴的,谢谢。

我看到两个可能的问题:

1( 你的数据加载器输出一个张量,所以你不需要创建另一个张量。只需这样做:

output = net(inputs)

2( 您是否将您的模型发送到device?如果是,您还需要发送inputs。如果没有,您就不需要对输出进行此操作:

loss = criterion(output,labels)

然而,我不确定你的错误是否与这2点无关。考虑在代码中发布该行(而不是lib(。此外,考虑包含更多关于tensor_traintensor_label的信息

Ty要求回复,但问题来自另一件事我正在创建我的模型,就像这个

class Perceptron(nn.Module):
def __init__(self):
super(Perceptron,self).__init__()
self.type = nn.Linear(4,3)
def forward(self,x):
return self.type(x)
net = Perceptron().to(device)

以及nn。模块已经得到了一个类型属性,这就是我得到这个错误的原因(i thing(,然后我通过更改self.type by self.anythingElseThanType 来解决

相关内容

最新更新