PyTorch报”AttributeError: ‘module’ object has no attribute ‘unique’ “的原因以及解决办法

问题描述

在使用 PyTorch 运行程序时,可能会遇到以下提示:

AttributeError: 'module' object has no attribute 'unique'

这一报错提示通常会在 PyTorch 的 0.3.1 版本及以下版本中出现。该错误提示表明,无法找到名为 unique 的属性。

问题原因

PyTorch 的版本更新迭代非常快,在 0.4.0 版本中,unique 函数被引入为原生函数,而在 0.3.1 及以下版本中并不提供该函数。因此,当你在较旧的 PyTorch 版本中使用 unique 函数时,会出现上述报错提示。

解决办法

如果你想在 PyTorch 0.3.1 及以下版本中使用 unique 函数,可以通过以下两种方式解决该问题:

方法一:手动实现 unique 函数

你可以自己手写 unique 函数,使用 Python 中的 set 和 list 等数据结构,具体实现方式如下:

def unique(tensor):
    tensor_list = tensor.tolist()
    unique_list = list(set(tensor_list))
    tensor_out = tensor.new(unique_list)
    return tensor_out

可以看出,该函数将输入的 tensor 转换为 list 类型,并使用 set 函数去除重复元素。之后在定义新的 Tensor,返回去重后的 Tensor。

方法二:更新 PyTorch 版本

另一种解决办法是升级 PyTorch 的版本至 0.4.0 及以上版本,从而使用原生的 unique 函数。

为此,你需要使用以下指令从 PyTorch 官网上下载最新版本:

pip install torch==1.8.0 -f https://download.pytorch.org/whl/cu111/torch_stable.html

这里使用了最新的 1.8.0 版本,安装方式为直接 pip 安装,同时指定安装源为 PyTorch 的官方源。

总结

无论是使用手写函数,还是升级 PyTorch 版本使用原生函数,都需要权衡各方面的情况,采取最优的解决方案。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyTorch报”AttributeError: ‘module’ object has no attribute ‘unique’ “的原因以及解决办法 - Python技术站

(0)
上一篇 2023年3月19日
下一篇 2023年3月19日

相关文章

合作推广
合作推广
分享本页
返回顶部