问题描述
在使用 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技术站