pytorch - 0-dim 张量的无效索引。使用 tensor.item() 将 0-dim 张量转换为 Python 数字
问题描述
我正在使用 PyTorch 教程来计算每个类的准确性,它会抛出一个错误,使用tensor.item()
已经存在的错误class_correct[target] += c[i].item()
class_correct = list(0. for i in range(15))
class_total = list(0. for i in range(15))
with torch.no_grad():
for ii, data in enumerate(test_loader):
t_image, target, classess, image_path = data
t_image = t_image.to(device)
target = target.to(device)
outputs = model(t_image)
_, predicted = torch.max(outputs, 1)
c = (predicted == target).squeeze()
for i in range(4):
target = target[i]
class_correct[target] += c[i].item()
class_total[target] += 1
for i in range(14):
print('Accuracy of %5s : %2d %%' % (
classes[i], 100 * class_correct[i] / class_total[i]))
任何评论将不胜感激。
解决方案
由于c.shape
,torch.Size([])
不是列表。所以它有错误。您可以使用c.item()
.
推荐阅读
- c# - 在 xunit 中为不同的程序模式重新运行测试组
- html - 使用 + 选择器在另一个元素中以不同的方式设置相同的类
- reactjs - 在 reducer 中更新状态不会传播到组件
- c# - 如何从另一个表单中隐藏按钮
- sql-server - 使用左连接/外连接连接多个表
- ruby - 使用全局变量调用函数
- jedis - redis.clients.jedis.exceptions.JedisDataException:ERR 值不是整数或超出范围
- java - 使用 spring-data-redis 将 500k 记录插入 redis
- c++ - c ++数学问题,如果数学都在同一行,则双精度数不返回值
- recursion - 得到错误 :: rest: 需要一个非空列表;给定:()在检查测试时在球拍博士中