报错
IndexError Traceback (most recent call last)
Cell In[26], line 19
16 optimizer.step()
18 if (epoch+1) % 20 == 0:
---> 19 print('Epoch[{}/{}], loss: {:.6f}'.format(epoch+1, num_epochs, loss.data[0]))
IndexError: invalid index of a 0-dim tensor. Use `tensor.item()` in Python or `tensor.item<T>()` in C++ to convert a 0-dim tensor to a number
解答
这个错误信息表明尝试访问一个零维张量的元素,但是零维张量没有索引。在PyTorch中,零维张量表示标量值,它没有维度,因此不能使用索引来访问其元素。
错误信息中的tensor.item()
可以用来获取零维张量中的标量值
因为loss.data
是一个零维张量,loss.data[0]
试图从零维张量loss.data
中获取第一个元素不可行,可以使用loss.data.item()
来获取loss.data
中的标量值,如下所示:
print('Epoch[{}/{}], loss: {:.6f}'.format(epoch+1, num_epochs, loss.data.item()))
使用loss.data.item()
将零维张量loss.data
转换为一个Python标量,在PyTorch中,零维张量通常表示模型的损失值或其他标量结果。当想要获取这些结果的值时,应该使用.item()
方法。