GNN実装・超入門 -小話:有効グラフと無効グラフの定義-
最近GNNに惹かれてます.
現在も,自分のシステムの機構の一部にR-GCNを使っているのですが,きちんと理解しようと以下で勉強し直しています.
・グラフニューラルネットワーク: PyTorchによる実装
・PyG公式ドキュメント
pytorch-geometric.readthedocs.io
今日は地味につまった,PyGによる有効グラフと無効グラフの定義についです.
公式ドキュメントによると無効グラフの定義ってこれなんですが,
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) >>> Data(edge_index=[2, 4], x=[3, 1])
「ん,,この定義の仕方↓って有効グラフじゃないの???方向あるじゃん,,」と疑問に思い,地味に進めませんでした.
edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]], dtype=torch.long)
結論,PyGでは「エッジの両端を入れ替えたものは同じエッジとして扱われるため、この定義の仕方で無効グラフとして扱われる」ようです(間違っていたらご指摘ください)
諸々確認してみました.
◎無効グラフの場合
#エッジ数の確認と,有効グラフかどうかの判定
>>2
>>False
おお,確かに,エッジ数が重複が削除されて4→2,そして,無効グラフであることを示すFalseになっています.
◎有効グラフの場合
>>4
>>True
有効グラフの場合はエッジ数がそのまま4で,きちんと表示もTrueです.
少しつまったので,記しておきます.
本当にこのままじゃダメだなぁと思う。
ようやく手にした2年間のチャンス。
このままだと絶対にダメだなぁと思う。
何もかもが遅すぎるし効率が悪すぎるのがダメだ。
本当に遅すぎるし、効率が悪すぎるし、戦略なさすぎるし
もっと早く効率よくするにはどうしたらいいのかちゃんと考えろ。
工夫して研究しろ。本気で研究しろ。弓道の先輩もそう言っとった
強制力をうまく使おう
結局辛いこと、えっちらほっちら頑張らんと何も身につかんから
授業の強制力を利用すべし!
①授業の履修登録をする→やらないとGPAが下がる危機感
②授業はリアルが一番捗る→リアルの先生の前でやることで、緊張感。やっぱりネット授業だとなんか身につかんなぁ。予習復習大事!授業内で全て理解するイメージ。
■やること・やらないことリスト■
■やること・やらないことリスト■
目的:研究
私の目的は研究すること、私はアホだからその一点に特化する。
方針:
・研究、数学、英語、コード力 以外は全て排除!徹底排除!削除削除削除おおおおおお!
・真面目にやらない
・無駄に半分真面目だから、超絶ハイパースーパー真骨「効率重視」!!!!どうすれば効率よくできるか、早くできるかを徹底追及。効率忘れない。
■やること
・研究
・NLP100本ノック
・競プロ
・bookreading真面目にやる(数学)
・授業時間内に課題を終わらせる
■やらないこと
・出席する必要のない授業は出ない。お家が一番捗る。月曜日と火曜日は学校に行く
・とにかく授業はいかに短時間で単位を取るかのみに特化する。
学習スピードの最適解
学習環境の最適解は見つけたけど、学習速度の最適解を見つけねばと思う
本当遅い。
学習環境、
候補、
1横着しないで丁寧にやる
2サイトを乱読
3本を乱読
4それでも分からなかったら人に聞く
とにかくスピード重視!!!!!!
学習環境の最適解
自分なりの学習環境の最適解は
オンライン自習室 + 快適な自室が最強
なぜなら自室だと、
・【大事!】好きな時間に仮眠ができる
・勉強する前に疲れない
・朝の時間を全部勉強に投入できる
・リラックスできる
・好きに飲み物や食べ物を食べられる