PyTorch报”NameError: name ‘Variable’ is not defined “的原因以及解决办法

  • Post category:Python

问题描述:

当使用PyTorch训练神经网络时,出现以下错误提示:

NameError: name 'Variable' is not defined

问题分析:

出现这个错误的原因是因为PyTorch的一些API在最近的版本中发生了变化,具体来说就是Variable这个类已经被废弃,而Tensor类可以直接被求导和操作。因此,在新版本的PyTorch中,不需要再使用Variable类来进行张量的操作和计算,直接使用Tensor即可。

解决方法:

  1. 将Variable转变为Tensor

原来的代码中可能存在声明Variable的操作,例如:

x = Variable(torch.Tensor([1, 2, 3]), requires_grad=True)

在新版本的PyTorch中,可以将这个代码改写为:

x = torch.tensor([1, 2, 3], dtype=torch.float32, requires_grad=True)

直接使用Tensor类来声明张量即可。

  1. 更新PyTorch版本

如果PyTorch版本较老,可以通过pip命令升级到新版本,例如:

!pip install --upgrade torch

更新后,即可使用新版PyTorch中的API,避免出现类似Variable这样已经被废弃的类导致的错误。

总结:

设定Variable的代码在新版PyTorch已经可以直接采用Tensor进行求导和操作,即将Variable转变为Tensor,避免出现该错误。另外,如果PyTorch版本较旧,可以通过pip命令升级为最新的PyTorch版本,以使用最新的API。