ホーム » DGL » DGL 0.5 ユーザガイド : 1 章 グラフ : 1.4 外部ソースからグラフを作成する

DGL 0.5 ユーザガイド : 1 章 グラフ : 1.4 外部ソースからグラフを作成する

DGL 0.5ユーザガイド : 1 章 グラフ : 1.4 外部ソースからグラフを作成する (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/15/2020 (0.5.1)

* 本ページは、DGL の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

ユーザガイド : 1 章 グラフ : 1.4 外部ソースからグラフを作成する

外部ソースから DGLGraph を構築するためのオプションは以下を含みます :

  • グラフと疎行列のための外部 python ライブラリから変換 (NetworkX と SciPy)。
  • ディスクからグラフをロードする。

このセクションは他のグラフからの変換によるグラフを生成する関数はカバーしません。それらの概要については API リファレンス・マニュアルを見てください。

 

外部ライブラリからグラフを作成する

次のコードスニペットは SciPy 粗行列と NetworkX グラフからグラフを作成するためのサンプルです。

>>> import dgl
>>> import torch as th
>>> import scipy.sparse as sp
>>> spmat = sp.rand(100, 100, density=0.05) # 5% nonzero entries
>>> dgl.from_scipy(spmat)                   # from SciPy
Graph(num_nodes=100, num_edges=500,
      ndata_schemes={}
      edata_schemes={})

>>> import networkx as nx
>>> nx_g = nx.path_graph(5) # a chain 0-1-2-3-4
>>> dgl.from_networkx(nx_g) # from networkx
Graph(num_nodes=5, num_edges=8,
      ndata_schemes={}
      edata_schemes={})

nx.path_graph(5) から構築するとき、結果としての DGLGraph は 4 の代わりに 8 エッジを持つことに注意してください。これは nx.path_graph(5) が無向 NetworkX グラフ networkx.Graph を構築する一方で DGLGraph は常に有向であるためです。無向 NetworkX グラフを DGLGraph に変換する際、DGL は内部的には無向エッジを 2 つの有向エッジに変換します。有向 NetworkX グラフ networkx.DiGraph の使用はそのような動作を回避できます。

>>> nxg = nx.DiGraph([(2, 1), (1, 2), (2, 3), (0, 0)])
>>> dgl.from_networkx(nxg)
Graph(num_nodes=4, num_edges=4,
      ndata_schemes={}
      edata_schemes={})

Note: DGL はグラフを構築するために SciPy 行列と NetworkX グラフを内部的には tensor に変換します。そのため、これらの構築メソッドはパフォーマンス・クリティカル・パートのためのものではありません。

API 参照 : dgl.from_scipy(), dgl.from_networkx()

 

ディスクからグラフをロードする

グラフをストアするための多くのデータ形式があり総てのオプションを列挙することは不可能です。そのため、このセクションは特定の共通のものについての一般的な指針を与えるだけです。

 

カンマ区切り値 (CSV)

一つの非常に一般的な形式は CSV です、これはノード、エッジそしてそれらの特徴を表形式でストアします :

nodes.csv

年齢, タイトル
43, 1
23, 3

edges.csv

src, dst, 重み
0, 1, 0.4
0, 3, 0.9

このタイプのデータを python オブジェクト (e.g., numpy.ndarray) 内にロードするための既知の Python ライブラリ (e.g. pandas) があり、これらは DGLGraph を構築するために使用できます。バックエンド・フレームワークがディスクから tensor をセーブ/ロードするユティリティ (e.g., torch.save(), torch.load()) も提供する場合、グラフをビルドするために同じ原理に従うことができます。

次も参照 : エッジペア CSV から空手クラブ・ネットワークをロードするためのチュートリアル

 

JSON/GML 形式

特に高速ではありませんが、NetworkX は様々なデータ形式をパースする多くのユティリティを提供します、それらは DGL にこれらのソースからグラフを間接的に作成することを可能にします。

 

DGL バイナリ形式

DGL はバイナリ形式でストアされたディスクからグラフをセーブしてロードするための API を提供します。グラフ構造は別にして、API はまた特徴データとグラフレベルのラベルデータも扱います。DGL はまたグラフを直接 S3 や HDFS にチェックポイントすることもサポートします。リファレンス・マニュアルは使用方法についてより詳細を提供します。

API 参照 : dgl.save_graphs(), dgl.load_graphs()

 

以上






AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com