概要
5,6年前からやりたかったGNNに着手している。今回は下記の書籍でお勉強して、チュートリアルを改造しながらやりたいことをやろうと。
- 実施期間: 2025年3月
- 環境:Ubuntu22.04LTS
- Python: condaのPython3.10
1. 環境設定
torch-geometric-temporalを入れるところまで忘れそうなので残す。pytorchは下記公式サイトのCUDA11.8版をpipで入れる。condaでは入れられなくなっていた。
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install torch_geometric
pip install torch-geometric-temporal
2. エラーの対処
本題のエラーの対処方法をだが、下記を実行すると掲題のエラーが出る。
from torch_geometric_temporal.signal import StaticGraphTemporalSignal
2024/3/末現在、公式githubのissueにbug報告がされていて暫定対応方法があった。issueはopenだし最新版のtorch-geometric-temporalを入れてもエラーは出るのでまだ対応していただけてないみたい。
対応いただくまではローカルの下記pyファイルを編集しなければならない。
/home/[name]/miniconda3/envs/[env name]/lib/python3.10/site-packages/torch_geometric_temporal/nn/attention/tsagcn.py
torch-geometric-temporalの中でsparse graphをdense graphに変換する関数のimportで齟齬があるらしい。
from torch_geometric.utils.to_dense_adj import to_dense_adj # 誤
from torch_geometric.utils._to_dense_adj import to_dense_adj # 正
pythonは依存関係が複雑だから、昔は問題なく動いていたのだろうと思う。
以上