一、基础环境:
- 操作系统:linux
- python版本:3.6.5
- cuda版本 : 10.1
- pytorch版本:1.4.0
二、下载依赖包:
安装pytorch-geometric前,需要根据相关的配置(python、cuda、pytorch)安装相关的依赖:
- torch-scatter
- torch-sparse
- torch-cluster
- torch-spline-conv
这4个包官方提供了对应的下载地址:https://pytorch-geometric.com/whl/torch-1.4.0.html(torch-1.4.0.html 对应我的pytorch版本号)
得到安装文件如下:
- torch_scatter-latest+cu101-cp36-cp36m-linux_x86_64.whl
- torch_sparse-latest+cu101-cp36-cp36m-linux_x86_64.whl
- torch_spline_conv-latest+cu101-cp36-cp36m-linux_x86_64.whl
- torch_cluster-latest+cu101-cp36-cp36m-linux_x86_64.whl
三、安装PyG和依赖
利用pip 安装依赖文件:
pip install ./torch_scatter-latest+cu101-cp36-cp36m-linux_x86_64.whl
pip install ./torch_sparse-latest+cu101-cp36-cp36m-linux_x86_64.whl
pip install ./torch_spline_conv-latest+cu101-cp36-cp36m-linux_x86_64.whl
pip install ./torch_cluster-latest+cu101-cp36-cp36m-linux_x86_64.whl
pip install torch-geometric
四、验证测试
选择pytorch_geometric-master/examples下的例子进行测试。
cd example
python gcn.py
出现如下错误:
Traceback (most recent call last):
File "/XX/anaconda3/lib/python3.6/site-packages/torch_sparse/__init__.py", line 15, in <module>
library, [osp.dirname(__file__)]).origin)
File "/XX/anaconda3/lib/python3.6/site-packages/torch/_ops.py", line 106, in load_library
ctypes.CDLL(path)
File "/XX/anaconda3/lib/python3.6/ctypes/__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /XX/anaconda3/lib/python3.6/site-packages/torch_sparse/_convert.so)
网上搜了资料,主要原因是程序的编译器的版本是比较低,缺少GLIBCXX_3.4.22,其实就是少了libstdc++.so.6.0.22。
在服务器上查找 libstdc++.so.6*
sudo find / -name 'libstdc++.so*'
找到 libstdc++.so.6.0.22 版本,然后复制 /lib64 目录中,然后做一个软连接
cd /lib64
rm libstdc++.so.6
ln libstdc++.so.6.0.22 libstdc++.so.6
问题解决。
执行
python gcn.py
结果如下:
Epoch: 001, Train: 0.5929, Val: 0.3860, Test: 0.3830
Epoch: 002, Train: 0.6571, Val: 0.4220, Test: 0.4130
Epoch: 003, Train: 0.6786, Val: 0.4220, Test: 0.4130
Epoch: 004, Train: 0.7429, Val: 0.4400, Test: 0.4320
Epoch: 005, Train: 0.8286, Val: 0.5520, Test: 0.5620
Epoch: 006, Train: 0.8643, Val: 0.6200, Test: 0.6490
Epoch: 007, Train: 0.8714, Val: 0.6500, Test: 0.6560
Epoch: 008, Train: 0.8857, Val: 0.6700, Test: 0.6790
Epoch: 009, Train: 0.8857, Val: 0.6800, Test: 0.6810
Epoch: 010, Train: 0.8929, Val: 0.6860, Test: 0.6970
Epoch: 011, Train: 0.9143, Val: 0.6880, Test: 0.7000
Epoch: 012, Train: 0.9143, Val: 0.6920, Test: 0.6920
Epoch: 013, Train: 0.9143, Val: 0.6960, Test: 0.6940
Epoch: 014, Train: 0.9214, Val: 0.6960, Test: 0.6940
Epoch: 015, Train: 0.9286, Val: 0.6960, Test: 0.6940
Epoch: 016, Train: 0.9357, Val: 0.7020, Test: 0.7110
'''
Epoch: 194, Train: 1.0000, Val: 0.8020, Test: 0.8270
Epoch: 195, Train: 1.0000, Val: 0.8020, Test: 0.8270
Epoch: 196, Train: 1.0000, Val: 0.8020, Test: 0.8270
Epoch: 197, Train: 1.0000, Val: 0.8020, Test: 0.8270
Epoch: 198, Train: 1.0000, Val: 0.8020, Test: 0.8270
Epoch: 199, Train: 1.0000, Val: 0.8020, Test: 0.8270
Epoch: 200, Train: 1.0000, Val: 0.8020, Test: 0.8270