--> 120 cur_acc=torch.sum(labels==pred1)/preds.shape[0] 121 optimizer.zero_grad() 122 cur_loss.backward() TypeError: sum(): argument 'input' (position 1) must be Tensor, not bool
时间: 2023-11-27 19:54:40 浏览: 24
这个错误是因为 `labels==pred1` 的结果是一个布尔类型的 Tensor,而 `torch.sum()` 函数的参数必须是一个 Tensor 对象,不能是布尔类型。可以通过将 `labels==pred1` 转换为整型 Tensor 来解决这个问题,例如:
```
cur_acc = torch.sum((labels == pred1).to(torch.float32)) / preds.shape[0]
```
这里使用了 `to()` 函数将布尔类型的 Tensor 转换为浮点型的 Tensor,才能进行求和操作。
相关问题
cur_acc = torch.sum(y == pred) / output.shape[0]
cur_acc是通过比较y与pred两个张量元素是否相等后,计算相等元素的总数,并除以output张量的行数得到的准确率。在torch库中,torch.sum(张量)函数用于对张量进行求和操作,y==pred会得到一个布尔型张量,其中相等的位置元素为True,不相等的位置元素为False,torch.sum(y==pred)计算所有为True的元素总数。而output.shape[0]表示output张量的行数。所以cur_acc = torch.sum(y == pred) / output.shape[0]的结果表示对于一个模型的预测结果,与真实标签y相等的总数除以样本数,即正确预测的比例,即准确率。
133 cur_loss=F.cross_entropy(preds,labels) 134 _,pred1=torch.max(preds,axis=1) --> 135 cur_acc=torch.sum(lables==pred1)/preds.shape[0] 136 optimizer.zero_grad() 137 cur_loss.backward() NameError: name 'lables' is not defined
这个错误是因为在第 135 行代码中,`lables` 变量没有定义。很可能是一个拼写错误,应该将其更正为 `labels`。
正确的代码应该是:
```
133 cur_loss=F.cross_entropy(preds,labels)
134 _,pred1=torch.max(preds,axis=1)
135 cur_acc=torch.sum(labels==pred1)/preds.shape[0]
136 optimizer.zero_grad()
137 cur_loss.backward()
```