「PyTorchでGNNを試してみたい」
「PythonでGraph Neural Networkを試したい」
このように思う方は、この記事をご覧ください。
この記事を読めば、早くて10分以内にはできるようになります。
本記事の内容
- PyTorch Geometricとは?
- PyTorch Geometricのシステム要件
- PyTorch Geometricのインストール
- PyTorch Geometricの動作確認
それでは、上記に沿って解説していきます。
PyTorch Geometricとは?
PyTorch Geometric(PyG)とは、PyTorchの幾何学的深層学習拡張ライブラリです。
簡単に言うと、PyTorchでグラフニューラルネットワークを行うためのライブラリとなります。
GNN(Graph Neural Network)という表記の方が、馴染があるかもしれません。
PyTorch Geometrichは、GNNをPythonで行うためのライブラリということです。
GNNに関する説明は、他の専門的な記事に任せます。
ここでは、GNNとネットワーク分析に関する説明をしておきます。
ネットワーク分析については、次の記事でまとめています。
ネットワーク分析で対象となっていたモノは、GNNの対象にもなるはずです。
もっと言うと、何らかの関連性を持つものなら、何でもGNNの対象になり得ます。
そう考えると、GNNの可能性はまだまだありそうです。
ただ、それを探し出して、データを収集するのが大変なんですけどね・・・
でも、GNNが個人でも簡単にできる環境が簡単に容易できます。
そして、それを可能にしているのがPyTorch Geometricということです。
以上、PyTorch Geometricについて説明しました。
次は、PyTorch Geometricのシステム要件を確認します。
PyTorch Geometricのシステム要件
現時点(2021年8月)でのPyTorch Geometricの最新バージョンは、1.7.2となります。
この最新バージョンは、2021年6月26日にリリースされています。
PyTorch Geometricのシステム要件は、次の3つに注意しましょう。
- OS
- Python
- PyTorch
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Python
PyTorch自体が、Python 3系のみのサポートとなります。
そのため、サポート対象となるPythonのバージョンは、Python 3系と考えておきましょう。
簡単に言うと、PyTorchがインストール可能なPythonバージョンということです。
PyTorch
PyTorch 1.4.0以降である必要があります。
要するに、古いPyTorchはダメということです。
現時点(2021年8月)では、PyTorch 1.9.0が最新バージョンとなります。
PyTorchのインストールについては、次の記事で解説しています。
まとめ
PyTorch Geometricのシステム要件は、PyTorch次第と言えます。
基本的には、PyTorchは仮想環境へのインストールをおススメします。
IDEにPyCharmを利用すれば、そこは特に意識する必要がありません。
プロジェクト毎に仮想環境となるからです。
また、以下のようにコマンドでも簡単に仮想環境を利用できます。
以上、PyTorch Geometricのシステム要件に関しての説明でした。
次は、PyTorch Geometricをインストールしていきます。
PyTorch Geometricのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
PyTorchをインストールした状況です。
>pip list Package Version ----------------- ------------ numpy 1.21.1 Pillow 8.3.1 pip 21.2.3 setuptools 57.4.0 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 typing-extensions 3.10.0.0
なお、PyTorchは次の条件でインストールしています。
GPU対応版PyTorch 1.9.0をインストールするコマンドが生成されています。
次のコマンドにより、インストール済みのPyTorchのバージョンを確認できます。
>python -c "import torch; print(torch.__version__)" 1.9.0+cu111
では、PyTorch Geometricのインストールを行っていきます。
PyTorch Geometricのインストールは、補助ツールを使いましょう。
PyTorch Geometric公式
https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html
上記ページにアクセスします。
次のような表示を確認できます。
同じような機能が、PyTorch公式にも存在しています。
機能としては、インストールコマンドを生成するためのツールです。
今回は、次のように選択しました。
PyTorchのインストールとほぼ同じになるはずです。
生成されたコマンドを使ってインストールを行います。
その前に、pipとsetuptoolsの更新はしておきましょう。
pipコマンドを使う場合、常に以下のコマンドを実行するようにします。
python -m pip install --upgrade pip setuptools
では、生成されたコマンドを実行します。
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://pytorch-geometric.com/whl/torch-1.9.0+cu111.html
インストールは、少し時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version --------------------- ------------ certifi 2021.5.30 charset-normalizer 2.0.4 colorama 0.4.4 googledrivedownloader 0.4 idna 3.2 isodate 0.6.0 Jinja2 3.0.1 joblib 1.0.1 MarkupSafe 2.0.1 networkx 2.6.2 numpy 1.21.1 pandas 1.3.1 Pillow 8.3.1 pip 21.2.3 pyparsing 2.4.7 python-dateutil 2.8.2 python-louvain 0.15 pytz 2021.1 rdflib 6.0.0 requests 2.26.0 scikit-learn 0.24.2 scipy 1.7.1 setuptools 57.4.0 six 1.16.0 threadpoolctl 2.2.0 torch 1.9.0+cu111 torch-cluster 1.5.9 torch-geometric 1.7.2 torch-scatter 2.0.8 torch-sparse 0.6.11 torch-spline-conv 1.2.1 torchaudio 0.9.0 torchvision 0.10.0+cu111 tqdm 4.62.0 typing-extensions 3.10.0.0 urllib3 1.26.6
一気にインストール済みパッケージが、増えました。
PyTorch Geometricは、それだけ多くのパッケージに依存しているということです。
やはり、PyTorch Geometricは仮想環境にインストールすべきでしょうね。
以上、PyTorch Geometricのインストールを説明しました。
最後は、PyTorch Geometricの動作確認を行います。
PyTorch Geometricの動作確認
PyTorch Geometric公式にあるサンプルコードです。
import torch from torch_geometric.data import Data edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]], dtype=torch.long) x = torch.tensor([[-1], [0], [1]], dtype=torch.float) data = Data(x=x, edge_index=edge_index) print(data)
3つのノードと4つのエッジを持つ、重みのない無方向グラフの例となります。
各ノードには、1つの特徴を含んでいます。
上記サンプルコードを実行すると、次のような結果が表示されます。
Data(edge_index=[2, 4], x=[3, 1])
この表示が確認できれば、PyTorch Geometricの動作確認はOKです。
なお、上記結果の意味は以下。
edge_index = [始点リストと終点リスト(2), 枝数(4=2×2)]
x = [頂点数(3), 特徴量次元(1)]
※枝数は両方向を考慮する
以上、PyTorch Geometricの動作確認についての説明でした。