How to use tensor.item() ? IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number
How to use tensor.item() ? IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number
我对孪生神经网络还很陌生,最近发现 this example and Colab notebook。
当 运行 代码出现以下错误:
IndexError: invalid index of a 0-dim tensor. Use tensor.item() to
convert a 0-dim tensor to a Python number
上线:
result=torch.max(res,1)[1][0][0][0].data[0].tolist()
我找到了一些关于 tensor.item()
的东西,但我真的不知道如何在这里使用它。
编辑:
test_dataloader = DataLoader(test_dataset,num_workers=6,batch_size=1,shuffle=True)
accuracy=0
counter=0
correct=0
for i, data in enumerate(test_dataloader,0):
x0, x1 , label = data
# onehsot applies in the output of 128 dense vectors which is then converted to 2 dense vectors
output1,output2 = model(x0.to(device),x1.to(device))
res=torch.abs(output1.cuda() - output2.cuda())
label=label[0].tolist()
label=int(label[0])
result=torch.max(res,1)[1][0][0][0].data.item().tolist()
if label == result:
correct=correct+1
counter=counter+1
# if counter ==20:
# break
accuracy=(correct/len(test_dataloader))*100
print("Accuracy:{}%".format(accuracy))
这就是我收到错误的代码。
此错误消息的意思是您正在尝试索引到一个数组,其中只有一个项目。例如,
In [10]: aten = torch.tensor(2)
In [11]: aten
Out[11]: tensor(2)
In [12]: aten[0]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-12-5c40f6ab046a> in <module>
----> 1 aten[0]
IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim
tensor to a Python number
在上面的例子中,aten
是一个只有一个数字的张量。因此,使用索引(或更多)检索该数字会抛出 IndexError
.
从张量中提取数字(项目)的正确方法是使用 tensor.item()
,此处 aten.item()
如:
In [14]: aten.item()
Out[14]: 2
我对孪生神经网络还很陌生,最近发现 this example and Colab notebook。
当 运行 代码出现以下错误:
IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number
上线:
result=torch.max(res,1)[1][0][0][0].data[0].tolist()
我找到了一些关于 tensor.item()
的东西,但我真的不知道如何在这里使用它。
编辑:
test_dataloader = DataLoader(test_dataset,num_workers=6,batch_size=1,shuffle=True)
accuracy=0
counter=0
correct=0
for i, data in enumerate(test_dataloader,0):
x0, x1 , label = data
# onehsot applies in the output of 128 dense vectors which is then converted to 2 dense vectors
output1,output2 = model(x0.to(device),x1.to(device))
res=torch.abs(output1.cuda() - output2.cuda())
label=label[0].tolist()
label=int(label[0])
result=torch.max(res,1)[1][0][0][0].data.item().tolist()
if label == result:
correct=correct+1
counter=counter+1
# if counter ==20:
# break
accuracy=(correct/len(test_dataloader))*100
print("Accuracy:{}%".format(accuracy))
这就是我收到错误的代码。
此错误消息的意思是您正在尝试索引到一个数组,其中只有一个项目。例如,
In [10]: aten = torch.tensor(2)
In [11]: aten
Out[11]: tensor(2)
In [12]: aten[0]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-12-5c40f6ab046a> in <module>
----> 1 aten[0]
IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim
tensor to a Python number
在上面的例子中,aten
是一个只有一个数字的张量。因此,使用索引(或更多)检索该数字会抛出 IndexError
.
从张量中提取数字(项目)的正确方法是使用 tensor.item()
,此处 aten.item()
如:
In [14]: aten.item()
Out[14]: 2