torch_scatter安装踩坑实录及解决方法(ubuntu/conda/python/torch/cuda/torch_cluster)

【简洁版解决方案直接跳到最后】

一。安装途径

一般在ubuntu中配置python环境,选择conda安装是不错的选择。但是使用anaconda网站上torch_scatter的安装指令conda install -c esri torch-scatter安装后可能会发现无法成功运行,而且安装过程中还会修改你其他库的版本,导致环境崩掉。这是因为当你没有指定安装库的版本时,conda会从当前安装渠道寻找最新版本的安装包,并且自动将你已经安装的其他环境更新到和它匹配。经过对使用torch_scatter的开源项目的查询我发现基本上在requirement这一栏都会建议使用pip来安装torch_scatter。在使用pip安装时,如果没有指定版本号,则pip会根据你已有的环境,自动安装和你当前环境最匹配的版本。因此,我们建议使用pip安装torch相关库。使用anaconda时注意在anaconda中create虚拟环境后在虚拟环境内pip安装。

二。版本问题

有的开源项目会给出他们使用的torch_scatter的pip install链接,但是由于各种库的版本不断更新,安装后很可能出现和torch的cuda版本不匹配的问题。

如果你在本站搜索这个问题的解决方法,十有八九会告诉你,先查看自己的torch版本,然后去下载对应版本的torch_scatter的whl文件并安装。你可以试一试看看是否成功。如果发现不成功请往下看。

首先要明确的一点是,我们需要保持torch和torch_scatter版本的高度一致。经过第一部分的叙述我们可以知道,使用pip来安装是比较好的选择。

首先我们直接去https://download.pytorch.org/whl/torch_stable.html下载torch的whl文件并用pip install 安装。方法一:在网站找到你需要的whl,右键,复制链接,使用【wget 链接】进行下载。下载后使用【pip install 文件名】进行安装。方法二:复制链接后,直接【pip install 链接】进行安装。这里建议使用方法一,并注意查看下载的whl文件是否是cuda版本!在网站页面寻找链接时,不要看左侧括号内的cuda版本,那个好多是错的,要看文件名中间是否有+cu10x的字样!例如,我的python版本是3.8,cuda版本10.2,那么我可以安装torch-1.9.0+cu102-cp38-cp38-linux_x86_64.whl。但是torch-1.7.0和1.8.0虽然网页上左侧写了cu100、cu101,下载下来后会发现文件名没有cuda版本,如果你是cu10.0或10.1,安装会报错。(注意:安装torch前需知道自己安装的python和cuda版本,它多半是你在创建虚拟环境时指定的。如果你需要查看自己的cuda版本,查看的方法不是nvcc -v!!这个指令查看的是你当前机器本身实际安装的cuda,我们这里讨论的是虚拟环境中的cuda,两者没有必然联系。如果你正在使用conda虚拟环境,你可以使用指令conda list查看自己已经安装的python和cudatoolkit版本。)

安装完torch后,我第一反应是再去https://pytorch-geometric.com/whl/torch-1.5.0.html下载相同版本的torch_scatter的whl文件并安装。然而我尝试了很多次,最后都会报错torch_scatter版本号中有一串乱码,导致和torch版本对不上号。最终我在github.com/pyg-team/pytorch_geometric/issues/3058找到了解决办法:使用指令pip install --no-index torch-scatter -f https://pytorch-geometric.com/whl/torch-1.9.0+cu102.html,就可以把那串乱码去掉,然后就可以成功运行啦!

【简洁版总结】安装torch及其相关库不成功时,建议全部使用pip安装,如果正在使用anaconda,则在conda虚拟环境内使用pip安装。

torch,torchvision,torchaudio此三样通过在http://download.pytorch.org/whl/torch_stable.html下载指定版本的wheels并pip安装(注意检查下载下来的文件名中是否有cuda版本号,没有则可能不是cuda版本)。

torch_cluster,torch_scatter,torch_sparse则在成功安装torch后,使用指令pip install --no-index torch-cluster -f https://pytorch-geometric.com/whl/torch-1.x.0+cu10x.html(torch_cluster可直接修改为另外两样)进行安装即可。(!!x是指代你们自己的版本号,不是真的打cu10x!!)

如果本文章对你有用,或你有任何质疑,可以在评论区留言。

  • 49
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: 很高兴能回答您的问题,torch-scatter库是一个PyTorch库,它提供了一系列函数来处理数据中的索引和深度学习中的稀疏数据。它可以用于计算距离,更新索引,扩展索引,处理数据块,处理稀疏数据,进行数据平衡,调整大小,等等。 ### 回答2: torch-scatter库是一个用于在PyTorch中进行稀疏张量的聚合操作的库。在深度学习中,稀疏张量是一种特殊的数据结构,其中大部分元素都是零。与普通的密集张量相比,稀疏张量在存储和计算上更加高效。而torch-scatter库提供了一些方便的函数,可以针对稀疏张量进行聚合操作。 具体来说,torch-scatter库提供了一些常用的聚合函数,如求和、均值、最大值等。这些函数能够对稀疏张量进行聚合计算,并返回聚合结果。与传统的dense tensor相比,对于稀疏张量的聚合计算,torch-scatter库能够更高效地处理,节省内存和计算资源。 该库还提供了一些高级功能,如自定义聚合函数和处理多个输入张量的聚合等。这些功能使得用户可以根据自己的需求,定义并执行复杂的稀疏张量聚合计算。 总的来说,torch-scatter库为PyTorch用户提供了一种便捷而高效的处理稀疏张量的方式,使得稀疏张量的聚合计算更加方便和灵活。同时,该库也为深度学习领域中以稀疏张量为基础的算法研究提供了很好的支持。 ### 回答3: torch-scatter库是PyTorch中的一个扩展库,主要用于执行图数据的分散(scatter)操作。图数据是指由节点和边构成的复杂数据结构,通常用于表示非结构化数据,如社交网络、知识图谱等。 torch-scatter库通过提供一系列高效的图聚合操作,使得在图数据上进行计算更加方便和高效。其中最常用的操作是scatter_add函数,它允许在图节点上对特征进行聚合,生成全局的节点特征表示。 具体来说,torch-scatter库可以执行以下操作: 1. scatter_add: 将每个节点的特征按照图边的连接关系进行聚合,并返回聚合结果。这对于实现图卷积网络(GCN)等图神经网络模型非常关键。 2. scatter_mean: 类似于scatter_add,但是将节点的特征聚合为均值。 3. scatter_max: 类似于scatter_add,但是将节点的特征聚合为最大值。 4. scatter_min: 类似于scatter_add,但是将节点的特征聚合为最小值。 5. scatter_mul: 类似于scatter_add,但是将节点的特征进行乘法聚合。 除了上述操作外,torch-scatter还提供了一些其他的辅助函数,如index_select、index_add等,用于快速和灵活地处理图数据。 总之,torch-scatter库是PyTorch中一个强大的图聚合操作库,提供了高效的图数据处理方法,方便用户在图神经网络模型中进行计算和研究。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值