PyTorch模型训练报AttributeError: 'list'无flatten属性的解决求助
问题解决:AttributeError: 'list' object has no attribute 'flatten'
核心错误原因
在ImageClassificationBase的validation_step方法中,错误地将包含图像和标签的整个batch(列表/元组)传入模型,而非仅传入图像张量:
predicted_label = self(batch) # 错误:batch是(images, labels)的组合,不是单一张量
模型的forward方法预期接收图像张量(如torch.Size(128, 3, 32, 32)),但实际传入的是列表,导致调用self.flatten(xb)时触发AttributeError。
修复后的代码
将validation_step中的错误行改为传入images:
def validation_step(self, batch): images, labels = batch predicted_label = self(images) # 修正:传入图像张量而非整个batch loss = F.cross_entropy(predicted_label, labels) acc = accuracy(predicted_label, labels) return {'val_loss' : loss.detach(), 'val_acc' : acc}
额外注意事项
- 最后一行训练代码中,参数
model未定义,应改为你创建的model1:fit(10, 0.01, model1, train_loader, val_loader) - 确保
accuracy函数已正确定义(代码中未给出实现,需确认它能接收预测张量和标签并返回准确率张量)。
内容的提问来源于stack exchange,提问作者Safi Ahmed
相关产品推荐
相关产品推荐

