เอกสาร กระดาษ | โน๊ตบุ๊ค Colab และวิดีโอสอน ทรัพยากรภายนอก ตัวอย่าง OGB
PYG (Pytorch Geometric) เป็นห้องสมุดที่สร้างขึ้นบน Pytorch เพื่อเขียนและฝึกอบรมเครือข่ายประสาท (GNNS) ได้อย่างง่ายดายสำหรับแอปพลิเคชันที่หลากหลายที่เกี่ยวข้องกับข้อมูลที่มีโครงสร้าง
ประกอบด้วยวิธีการต่าง ๆ สำหรับการเรียนรู้อย่างลึกซึ้งเกี่ยวกับกราฟและโครงสร้างที่ผิดปกติอื่น ๆ หรือที่รู้จักกันในชื่อ การเรียนรู้เชิงลึกทางเรขาคณิต จากเอกสารที่ตีพิมพ์หลากหลาย นอกจากนี้ยังประกอบด้วยรถตักมินิแบทช์ที่ใช้งานง่ายสำหรับการใช้งานบนกราฟยักษ์ขนาดเล็กและเดี่ยวจำนวนมาก, การสนับสนุนหลาย GPU, คบเพลิงการสนับสนุน torch.compile , การสนับสนุน DataPipe , ชุดข้อมูลเกณฑ์มาตรฐานทั่วไปจำนวนมาก
คลิกที่นี่เพื่อเข้าร่วมชุมชน Slack ของเรา!
- ไฮไลท์ห้องสมุด
- ทัวร์ด่วนสำหรับผู้ใช้ใหม่
- ภาพรวมสถาปัตยกรรม
- นำไปใช้โมเดล GNN
- การติดตั้ง
ไฮไลท์ห้องสมุด
ไม่ว่าคุณจะเป็นนักวิจัยการเรียนรู้ของเครื่องหรือผู้ใช้ชุดเครื่องมือการเรียนรู้ของเครื่องครั้งแรกนี่คือเหตุผลบางประการที่ต้องลองใช้ PYG สำหรับการเรียนรู้ของเครื่องเกี่ยวกับข้อมูลที่มีโครงสร้างกราฟ
- API ที่ใช้งานง่ายและใช้งานง่าย : ทั้งหมดที่ใช้คือรหัส 10-20 บรรทัดเพื่อเริ่มต้นด้วยการฝึกอบรมรุ่น GNN (ดูส่วนถัดไปสำหรับทัวร์ด่วน) Pyg เป็น Pytorch-on-the-Rocks : มันใช้ API ที่เป็นศูนย์กลางของเทนเซอร์และเก็บหลักการออกแบบไว้ใกล้กับวานิลลา Pytorch หากคุณคุ้นเคยกับ Pytorch แล้วการใช้ PYG นั้นตรงไปตรงมา
- แบบจำลอง GNN ที่ครอบคลุมและได้รับการดูแลเป็นอย่างดี : สถาปัตยกรรมเครือข่ายประสาทกราฟที่ทันสมัยส่วนใหญ่ได้รับการดำเนินการโดยนักพัฒนาห้องสมุดหรือผู้เขียนงานวิจัยและพร้อมที่จะนำไปใช้
- ความยืดหยุ่นที่ดี : โมเดล PYG ที่มีอยู่สามารถขยายได้อย่างง่ายดายสำหรับการทำวิจัยของคุณเองด้วย GNNS การปรับเปลี่ยนโมเดลที่มีอยู่หรือการสร้างสถาปัตยกรรมใหม่นั้นง่ายมากด้วยข้อความที่ใช้งานง่ายที่ผ่าน API และผู้ให้บริการและฟังก์ชั่นยูทิลิตี้ที่หลากหลาย
- โมเดล GNN ในโลกแห่งความเป็นจริงขนาดใหญ่ : เรามุ่งเน้นไปที่ความต้องการแอพพลิเคชั่น GNN ในสถานการณ์ที่ท้าทายในโลกแห่งความจริงและสนับสนุนการเรียนรู้เกี่ยวกับกราฟประเภทที่หลากหลายรวมถึง แต่ไม่ จำกัด เพียง: GNN ที่ปรับขนาดได้สำหรับกราฟที่มีโหนดนับล้าน Dynamic GNNS สำหรับการทำนายโหนดเมื่อเวลาผ่านไป GNNs ที่แตกต่างกันมีหลายโหนดและประเภทขอบ
ทัวร์ด่วนสำหรับผู้ใช้ใหม่
ในทัวร์ด่วนนี้เราเน้นความสะดวกในการสร้างและฝึกอบรมรุ่น GNN ด้วยรหัสเพียงไม่กี่บรรทัด
ฝึกอบรมรุ่น GNN ของคุณเอง
ในแวบแรกของ PYG เราใช้การฝึกอบรม GNN สำหรับการจำแนกเอกสารในกราฟการอ้างอิง สำหรับสิ่งนี้เราโหลดชุดข้อมูล CORA และสร้างรุ่น GCN 2 ชั้นอย่างง่ายโดยใช้ GCNConv ที่กำหนดไว้ล่วงหน้า:
import torch
from torch import Tensor
from torch_geometric . nn import GCNConv
from torch_geometric . datasets import Planetoid
dataset = Planetoid ( root = '.' , name = 'Cora' )
class GCN ( torch . nn . Module ):
def __init__ ( self , in_channels , hidden_channels , out_channels ):
super (). __init__ ()
self . conv1 = GCNConv ( in_channels , hidden_channels )
self . conv2 = GCNConv ( hidden_channels , out_channels )
def forward ( self , x : Tensor , edge_index : Tensor ) -> Tensor :
# x: Node feature matrix of shape [num_nodes, in_channels]
# edge_index: Graph connectivity matrix of shape [2, num_edges]
x = self . conv1 ( x , edge_index ). relu ()
x = self . conv2 ( x , edge_index )
return x
model = GCN ( dataset . num_features , 16 , dataset . num_classes ) ตอนนี้เราสามารถเพิ่มประสิทธิภาพโมเดลในวงฝึกอบรมคล้ายกับขั้นตอนการฝึกอบรม Pytorch มาตรฐาน
import torch . nn . functional as F
data = dataset [ 0 ]
optimizer = torch . optim . Adam ( model . parameters (), lr = 0.01 )
for epoch in range ( 200 ):
pred = model ( data . x , data . edge_index )
loss = F . cross_entropy ( pred [ data . train_mask ], data . y [ data . train_mask ])
# Backpropagation
optimizer . zero_grad ()
loss . backward ()
optimizer . step () ข้อมูลเพิ่มเติมเกี่ยวกับการประเมินประสิทธิภาพของโมเดลขั้นสุดท้ายสามารถพบได้ในตัวอย่างที่เกี่ยวข้อง
สร้างเลเยอร์ GNN ของคุณเอง
นอกเหนือจากการประยุกต์ใช้ GNNs ที่มีอยู่อย่างง่ายดาย PYG ยังง่ายที่จะใช้เครือข่ายประสาทกราฟที่กำหนดเอง (ดูที่นี่สำหรับบทช่วยสอนประกอบ) ตัวอย่างเช่นนี่คือทั้งหมดที่ใช้ในการใช้เลเยอร์ edge convolutional จาก Wang et al -
$$ x_i^{ prime} ~ = ~ max_ {j in mathcal {n} (i)} ~ textrm {mlp} _ { theta} left ([~ x_i, ~ x_j - x_i ~]
import torch
from torch import Tensor
from torch . nn import Sequential , Linear , ReLU
from torch_geometric . nn import MessagePassing
class EdgeConv ( MessagePassing ):
def __init__ ( self , in_channels , out_channels ):
super (). __init__ ( aggr = "max" ) # "Max" aggregation.
self . mlp = Sequential (
Linear ( 2 * in_channels , out_channels ),
ReLU (),
Linear ( out_channels , out_channels ),
)
def forward ( self , x : Tensor , edge_index : Tensor ) -> Tensor :
# x: Node feature matrix of shape [num_nodes, in_channels]
# edge_index: Graph connectivity matrix of shape [2, num_edges]
return self . propagate ( edge_index , x = x ) # shape [num_nodes, out_channels]
def message ( self , x_j : Tensor , x_i : Tensor ) -> Tensor :
# x_j: Source node features of shape [num_edges, in_channels]
# x_i: Target node features of shape [num_edges, in_channels]
edge_features = torch . cat ([ x_i , x_j - x_i ], dim = - 1 )
return self . mlp ( edge_features ) # shape [num_edges, out_channels] ภาพรวมสถาปัตยกรรม
PYG จัดเตรียมเฟรมเวิร์กหลายชั้นที่ช่วยให้ผู้ใช้สามารถสร้างโซลูชันเครือข่ายประสาทกราฟทั้งในระดับต่ำและสูง ประกอบด้วยส่วนประกอบต่อไปนี้:
- เครื่องยนต์ PYG ใช้เฟรมเวิร์กการเรียนรู้ที่ลึกของ Pytorch ที่ทรงพลังพร้อม
torch.compile และ Torchscript รวมถึงการเพิ่มไลบรารี CPU/CUDA ที่มีประสิทธิภาพสำหรับการทำงานบนข้อมูลเบาบาง เช่น pyg-lib - ที่เก็บข้อมูล PYG จัดการการประมวลผลข้อมูลการแปลงและการโหลดท่อ มันมีความสามารถในการจัดการและประมวลผลชุดข้อมูลกราฟขนาดใหญ่และให้บริการโซลูชั่นที่มีประสิทธิภาพสำหรับกราฟที่แตกต่างกัน นอกจากนี้ยังมีโซลูชันการสุ่มตัวอย่างที่หลากหลายซึ่งช่วยให้การฝึกอบรม GNNs บนกราฟขนาดใหญ่
- ผู้ให้บริการ PYG มัดฟังก์ชั่นที่จำเป็นสำหรับการใช้งานเครือข่ายประสาทกราฟ PYG รองรับการสร้างบล็อก GNN ที่สำคัญที่สามารถรวมและนำไปใช้กับส่วนต่าง ๆ ของโมเดล GNN เพื่อให้มั่นใจถึงความยืดหยุ่นที่หลากหลายของการออกแบบ GNN
- ในที่สุด PYG ให้ชุด รุ่น GNN มากมายและตัวอย่างที่แสดงรุ่น GNN บนมาตรฐานกราฟมาตรฐาน ด้วยความยืดหยุ่นผู้ใช้สามารถสร้างและแก้ไขโมเดล GNN ที่กำหนดเองได้อย่างง่ายดายเพื่อให้เหมาะกับความต้องการเฉพาะของพวกเขา
นำไปใช้โมเดล GNN
เราแสดงรายการรุ่น PYG, เลเยอร์และตัวดำเนินการตามหมวดหมู่:
เลเยอร์ GNN: เลเยอร์เครือข่ายนิวรัลกราฟทั้งหมดจะถูกนำไปใช้ผ่านอินเตอร์เฟส nn.MessagePassing เลเยอร์ GNN ระบุวิธีการส่งข้อความ เช่น การออกแบบข้อความการรวมและการอัปเดตที่แตกต่างกันตามที่กำหนดไว้ที่นี่ เลเยอร์ GNN เหล่านี้สามารถซ้อนกันเพื่อสร้างโมเดลเครือข่ายประสาทกราฟ
- GCNCONV จาก KIPF และ Welling: การจำแนกประเภทกึ่งผู้ดูแลด้วยกราฟ Convolutional Networks (ICLR 2017) [ ตัวอย่าง ]
- Chebconv จาก Defferrard และคณะ : เครือข่ายประสาทเทียมบนกราฟที่มีการกรองสเปกตรัมที่มีการแปลอย่างรวดเร็ว (NIPS 2016) [ ตัวอย่าง ]
- Gatconv จากVeličković และคณะ : เครือข่ายความสนใจของกราฟ (ICLR 2018) [ ตัวอย่าง ]
ขยายเพื่อดูเลเยอร์ GNN ที่ใช้งานทั้งหมด ...
- GCN2Conv จาก Chen et al. : เครือข่าย convolutional กราฟที่เรียบง่ายและลึก (ICML 2020) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- Splineconv จาก Fey et al. : splinecnn: การเรียนรู้เชิงเรขาคณิตอย่างรวดเร็วด้วยเมล็ด B-spline ต่อเนื่อง (CVPR 2018) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- nnconv จาก Gilmer และคณะ : ข้อความประสาทส่งผ่านทางเคมีควอนตัม (ICML 2017) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- CGCONV จาก Xie และ Grossman: Crystal Graph Neural Networks สำหรับการทำนายคุณสมบัติของวัสดุที่ถูกต้องและตีความได้ (ตัวอักษรทบทวนทางกายภาพ 120, 2018)
- ECCONV จาก Simonovsky และ Komodakis: Convolution ที่ปรับด้วยขอบบนกราฟ (CVPR 2017)
- EGCONV จาก Tailor และคณะ : ตัวกรองแบบปรับตัวและฟิวชั่น Aggregator สำหรับกราฟที่มีประสิทธิภาพ (GNNSYS 2021) [ ตัวอย่าง ]
- GATV2CONV จาก Brody และคณะ : เครือข่ายความสนใจของกราฟมีความสนใจแค่ไหน? (ICLR 2022)
- Transformerconv จาก Shi และคณะ : การทำนายฉลากหน้ากาก: โมเดลการส่งข้อความแบบรวมสำหรับการจำแนกประเภทกึ่งผู้ดูแล (Corr 2020) [ ตัวอย่าง ]
- Sageconv จาก Hamilton และคณะ : การเรียนรู้การเป็นตัวแทนอุปนัยบนกราฟขนาดใหญ่ (NIPS 2017) [ ตัวอย่างที่ 1 , ตัวอย่าง 2 , ตัวอย่าง 3 , ตัวอย่าง 4 ]
- GraphConv จาก เช่น Morris และคณะ : Weisfeiler และ Leman Go Neural: Neural Networks กราฟที่มีลำดับสูงกว่า (AAAI 2019)
- gatedgraphconv จาก Li et al. : เครือข่าย Neural Sequence Gated (ICLR 2016)
- ResgatedGraphConv จาก Bresson และ Laurent: กราฟกราฟที่เหลืออยู่ (Corr 2017)
- Ginconv จาก Xu และคณะ : เครือข่ายประสาทกราฟมีประสิทธิภาพแค่ไหน? (ICLR 2019) [ ตัวอย่าง ]
- Gineconv จาก Hu et al. : กลยุทธ์สำหรับการฝึกอบรมกราฟระบบประสาท (ICLR 2020)
- Armaconv จาก Bianchi และคณะ : กราฟโครงข่ายประสาทเทียมด้วยตัวกรอง arma convolutional (Corr 2019) [ ตัวอย่าง ]
- SGCONV จาก Wu et al. : การทำให้เครือข่าย convolutional กราฟง่ายขึ้น (Corr 2019) [ ตัวอย่าง ]
- AppNP จาก Klicpera และคณะ : ทำนายการเผยแพร่: เครือข่ายประสาทกราฟพบกับ Pergence PageRank (ICLR 2019) [ ตัวอย่าง ]
- MFCONV จาก Duvenaud และคณะ : เครือข่าย convolutional บนกราฟสำหรับการเรียนรู้ลายนิ้วมือโมเลกุล (NIPS 2015)
- Agnnconv จาก Thekumparampil และคณะ : เครือข่ายประสาทกราฟที่ใช้ความสนใจสำหรับการเรียนรู้แบบกึ่งผู้ดูแล (Corr 2017) [ ตัวอย่าง ]
- Tagconv จาก Du et al : TOPOLOGY Adaptive Graph Networks (Corr 2017) [ ตัวอย่าง ]
- PNACONV จาก Corso และคณะ : การรวมพื้นที่ใกล้เคียงหลักสำหรับอวนกราฟ (Corr 2020) [ ตัวอย่าง ]
- FACONV จาก Bo et al. : นอกเหนือจากข้อมูลความถี่ต่ำในเครือข่ายกราฟ Convolutional (AAAI 2021)
- Pdnconv จาก Rozemberczki และคณะ : Pathfinder Discovery Networks สำหรับการส่งข้อความประสาท (www 2021)
- RGCNCONV จาก Schlichtkrull และคณะ : การสร้างแบบจำลองข้อมูลเชิงสัมพันธ์ด้วยกราฟ Convolutional Networks (ESWC 2018) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- RGATCONV จาก Busbridge และคณะ : เครือข่ายความสนใจของกราฟเชิงสัมพันธ์ (Corr 2019) [ ตัวอย่าง ]
- FilmConv จาก Brockschmidt: GNN-Film: กราฟระบบประสาทที่มีการมอดูเลตเชิงเส้นที่ชาญฉลาด (ICML 2020) [ ตัวอย่าง ]
- SignedConv จาก Derr et al. : เครือข่ายกราฟกราฟที่ลงนาม (ICDM 2018) [ ตัวอย่าง ]
- DNACONV จาก FEY: เพียงแค่กระโดด: การรวมตัวของพื้นที่ใกล้เคียงแบบไดนามิกในเครือข่ายประสาทกราฟ (ICLR-W 2019) [ ตัวอย่าง ]
- Panconv จาก Ma et al. : การควบคุมแบบอินทิกรัลพา ธ และการรวมสำหรับเครือข่ายประสาทกราฟ (Neurips 2020)
- PointNetConv (รวมถึง การสุ่มตัวอย่างจุดที่ไกลที่สุด การสร้างกราฟแบบไดนามิกตามระยะ ทางที่ใกล้ที่สุด หรือ ระยะทางสูงสุด และ การแก้ไข K-NN สำหรับการสุ่มตัวอย่าง) จาก Qi et al : PointNet: การเรียนรู้อย่างลึกซึ้งเกี่ยวกับชุดจุดสำหรับการจำแนกประเภท 3 มิติและการแบ่งส่วน (CVPR 2017) และ PointNet ++: การเรียนรู้คุณสมบัติลำดับชั้นลึกเกี่ยวกับชุดจุดในพื้นที่เมตริก (NIPS 2017) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- Edgeconv จาก Wang et al. : กราฟ Dynamic CNN สำหรับการเรียนรู้เกี่ยวกับจุดคลาวด์ (Corr, 2018) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- XCONV จาก Li et al : Pointcnn: การควบคุมคะแนน X-transformed (Neurips 2018) [ ตัวอย่าง ]
- PPFCONV จาก Deng และคณะ : PPFNET: Global Context Aware คุณสมบัติท้องถิ่นสำหรับการจับคู่จุด 3 มิติที่แข็งแกร่ง (CVPR 2018)
- gmmconv จาก Monti และคณะ : การเรียนรู้เชิงลึกทางเรขาคณิตเกี่ยวกับกราฟและท่อร่วมโดยใช้ CNNS แบบผสม (CVPR 2017)
- FeastConv จาก Verma และคณะ : FeastNet: กราฟที่มีคุณสมบัติเป็นแนวสำหรับการวิเคราะห์รูปร่าง 3 มิติ (CVPR 2018)
- PointTransformerConv จาก Zhao และคณะ : Point Transformer (2020)
- HyperGraphConv จาก Bai et al. : Hypergraph Convolution และ Hypergraph Attention (Corr 2019)
- GravnetConv จาก Qasim และคณะ : การเป็นตัวแทนการเรียนรู้ของเรขาคณิตเครื่องตรวจจับอนุภาคที่ผิดปกติพร้อมเครือข่ายกราฟน้ำหนักระยะทาง (วารสารฟิสิกส์ยุโรป C, 2019)
- Supergat จาก Kim และ Oh: วิธีค้นหาย่านที่เป็นมิตรของคุณ: การออกแบบกราฟความสนใจด้วยการดูแลตนเอง (ICLR 2021) [ ตัวอย่าง ]
- HGTCONV จาก Hu et al. : หม้อแปลงกราฟที่แตกต่างกัน (www 2020) [ ตัวอย่าง ]
- HeatConv จาก Mo et al : เครือข่ายความสนใจของกราฟที่ได้รับการปรับปรุงขอบที่แตกต่างกันสำหรับการทำนายวิถีการเคลื่อนที่หลายเส้น (Corr 2021)
- SSGCONV จาก Zhu และคณะ : Simple Spectral Graph Convolution (ICLR 2021)
- FusedGatConv จาก Zhang และคณะ : การทำความเข้าใจกราฟการคำนวณ GNN: การคำนวณแบบประสานงาน IO และมุมมองหน่วยความจำ (MLSYS 2022)
- GPSCONV จากRampášek และคณะ : สูตรสำหรับหม้อแปลงกราฟทั่วไปที่มีประสิทธิภาพและปรับขนาดได้ (Neurips 2022) [ ตัวอย่าง ]
การรวมเลเยอร์: เลเยอร์การรวมกราฟรวมการแสดง vectorial ของชุดของโหนดในกราฟ (หรือกราฟย่อย) ลงในการแสดงเวกเตอร์เดียวที่สรุปคุณสมบัติของโหนด โดยทั่วไปจะนำไปใช้กับงานระดับกราฟซึ่งต้องการการรวมคุณสมบัติโหนดเข้ากับการแสดงกราฟเดียว
- Top-K Pooling จาก GAO และ JI: กราฟ U-Nets (ICML 2019), Cangea และคณะ : ไปสู่ตัวแยกประเภทกราฟแบบเบาบาง (Neurips-W 2018) และ Knyazev et al. : ทำความเข้าใจกับความสนใจและการวางนัยทั่วไปในเครือข่ายประสาทกราฟ (ICLR-W 2019) [ ตัวอย่าง ]
- Diffpool จาก Ying และคณะ : การแสดงกราฟแบบลำดับชั้นการเรียนรู้ด้วยการรวมที่แตกต่างกัน (Neurips 2018) [ ตัวอย่าง ]
ขยายเพื่อดูเลเยอร์การรวมที่นำไปใช้ทั้งหมด ...
- การรวมตัวกันอย่างตั้งใจ จาก Li et al. : เครือข่ายการจับคู่กราฟสำหรับการเรียนรู้ความคล้ายคลึงกันของวัตถุที่มีโครงสร้างของกราฟ (ICML 2019) [ ตัวอย่าง ]
- Set2Set จาก Vinyals และคณะ : Matters Order: Sequence to Sequence สำหรับชุด (ICLR 2016) [ ตัวอย่าง ]
- เรียงลำดับการรวม จากจาง และคณะ : สถาปัตยกรรมการเรียนรู้ลึกแบบ end-to-end สำหรับการจำแนกกราฟ (AAAI 2018) [ ตัวอย่าง ]
- Mincut รวมตัวกัน จาก Bianchi และคณะ : การจัดกลุ่มสเปกตรัมด้วยกราฟประสาทเครือข่ายสำหรับการรวมกราฟ (ICML 2020) [ ตัวอย่าง ]
- DMON รวมตัวกัน จาก Tsitsulin และคณะ : การจัดกลุ่มกราฟด้วยกราฟประสาทเครือข่าย (Corr 2020) [ ตัวอย่าง ]
- Graclus รวมตัวกัน จาก Dhillon และคณะ : การตัดกราฟถ่วงน้ำหนักโดยไม่มี eigenvectors: วิธีการหลายระดับ (PAMI 2007) [ ตัวอย่าง ]
- Voxel Grid Pooling จาก เช่น Simonovsky และ Komodakis: ตัวกรองที่มีการปรับสภาพขอบแบบไดนามิกในเครือข่ายประสาทแบบ convolutional บนกราฟ (CVPR 2017) [ ตัวอย่าง ]
- SAG รวมตัวกัน จาก Lee และคณะ : การรวมกราฟการใส่ใจในตนเอง (ICML 2019) และ Knyazev และคณะ : ทำความเข้าใจกับความสนใจและการวางนัยทั่วไปในเครือข่ายประสาทกราฟ (ICLR-W 2019) [ ตัวอย่าง ]
- การรวมขอบ จาก Diehl และคณะ : สู่การรวมกราฟโดยการหดตัวของขอบ (ICML-W 2019) และ Diehl: การรวมการหดตัวของขอบสำหรับเครือข่ายประสาทกราฟ (Corr 2019) [ ตัวอย่าง ]
- Asapooling จาก Ranjan และคณะ : ASAP: โครงสร้างแบบปรับตัวได้ตระหนักถึงการรวมตัวกันเพื่อการเรียนรู้การแสดงกราฟแบบลำดับชั้น (AAAI 2020) [ ตัวอย่าง ]
- Panpooling จาก Ma et al : การควบคุมแบบอินทิกรัลพา ธ และการรวมสำหรับเครือข่ายประสาทกราฟ (Neurips 2020)
- Mempooling จาก Khasahmadi และคณะ : เครือข่ายกราฟที่ใช้หน่วยความจำ (ICLR 2020) [ ตัวอย่าง ]
- กราฟมัลติเซ็ตหม้อแปลง จาก Baek และคณะ : การเรียนรู้ที่แม่นยำของการเป็นตัวแทนกราฟด้วยการรวมกราฟหลายชุด (ICLR 2021) [ ตัวอย่าง ]
- การรวมสมดุล จาก Bartunov และคณะ : (UAI 2022) [ ตัวอย่าง ]
โมเดล GNN: รุ่น GNN ที่รองรับของเรารวมเลเยอร์ผ่านหลาย ๆ ข้อความและผู้ใช้สามารถใช้โมเดลที่กำหนดไว้ล่วงหน้าเหล่านี้โดยตรงเพื่อทำการคาดการณ์บนกราฟ ซึ่งแตกต่างจากการซ้อนแบบง่าย ๆ ของเลเยอร์ GNN โมเดลเหล่านี้อาจเกี่ยวข้องกับการประมวลผลล่วงหน้าพารามิเตอร์ที่เรียนรู้เพิ่มเติมได้การเชื่อมต่อข้ามกราฟที่หยาบ ฯลฯ
- Schnet จากSchütt และคณะ : Schnet: เครือข่ายนิวรัลแบบต่อเนื่องที่ผ่านการกรองอย่างต่อเนื่องสำหรับการสร้างแบบจำลองการโต้ตอบควอนตัม (NIPS 2017) [ ตัวอย่าง ]
- Dimenet และ DimenetPlusPlus จาก Klicpera และคณะ : ข้อความทิศทางส่งผ่านสำหรับกราฟโมเลกุล (ICLR 2020) และข้อความทิศทางที่รวดเร็วและไม่แน่นอนที่รับรู้ผ่านโมเลกุลที่ไม่สมดุล (Neurips-W 2020) [ ตัวอย่าง ]
- Node2Vec จาก Grover และ Leskovec: Node2Vec: การเรียนรู้คุณสมบัติที่ปรับขนาดได้สำหรับเครือข่าย (KDD 2016) [ ตัวอย่าง ]
- กราฟลึก Infomax จากVeličković และคณะ : Deep Graph Infomax (ICLR 2019) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- กราฟมัลติเพล็กซ์ลึก Infomax จาก Park และคณะ : การฝังเครือข่ายมัลติเพล็กซ์ที่ไม่ได้รับการสนับสนุน (AAAI 2020) [ ตัวอย่าง ]
- การทำนายฉลากสวมหน้ากาก จาก Shi และคณะ : การทำนายฉลากหน้ากาก: โมเดลการส่งข้อความแบบรวมสำหรับการจำแนกประเภทกึ่งผู้ดูแล (Corr 2020) [ ตัวอย่าง ]
- PMLP จาก Yang และคณะ : เครือข่ายประสาทกราฟเป็น generalizers ที่ดีโดยเนื้อแท้: ข้อมูลเชิงลึกโดยการเชื่อมต่อ GNNs และ MLPs (ICLR 2023)
ขยายเพื่อดูโมเดล GNN ที่ใช้งานทั้งหมด ...
- การกระโดดความรู้ จาก Xu และคณะ : การเป็นตัวแทนการเรียนรู้บนกราฟด้วยเครือข่ายความรู้กระโดด (ICML 2018) [ ตัวอย่าง ]
- Metalayer สำหรับการสร้างเครือข่ายกราฟทุกชนิดที่คล้ายกับห้องสมุด Tensorflow กราฟอวนจาก Battaglia และคณะ : อคติอุปนัยเชิงสัมพันธ์การเรียนรู้ลึกและเครือข่ายกราฟ (Corr 2018)
- Metapath2vec จาก Dong และคณะ : Metapath2vec: การเรียนรู้การเป็นตัวแทนที่ปรับขนาดได้สำหรับเครือข่ายที่แตกต่างกัน (KDD 2017) [ ตัวอย่าง ]
- ตัวแปรทั้งหมดของ กราฟอัตโนมัติ และ ตัวแปร autoencoders variational จาก:
- การเข้ารหัสอัตโนมัติกราฟ Variational จาก KIPF และ Welling (NIPS-W 2016) [ ตัวอย่าง ]
- กราฟ AutoEncoder ที่ได้รับการปรับปรุงเป็นมาตรฐานสำหรับการฝังกราฟจาก Pan และคณะ (ijcai 2018) [ ตัวอย่าง ]
- กราฟอัตโนมัติที่เรียบง่ายและมีประสิทธิภาพพร้อมแบบจำลองเชิงเส้นเดียวจาก Salha และคณะ (ECML 2020) [ ตัวอย่าง ]
- ปิดผนึก จากจางและเฉิน: การทำนายลิงก์ตามเครือข่ายประสาทของกราฟ (Neurips 2018) [ ตัวอย่าง ]
- Renet จาก Jin et al. : เครือข่ายเหตุการณ์ที่เกิดขึ้นอีกเพื่อให้เหตุผลเกี่ยวกับกราฟความรู้ชั่วคราว (ICLR-W 2019) [ ตัวอย่าง ]
- Graphunet จาก GAO และ JI: กราฟ U-Nets (ICML 2019) [ ตัวอย่าง ]
- AttentiveFP จาก Xiong และคณะ : การผลักดันขอบเขตของการเป็นตัวแทนระดับโมเลกุลสำหรับการค้นพบยาด้วยกลไกความสนใจของกราฟ (J. Med. Chem. 2020) [ ตัวอย่าง ]
- DeepGCN และ Genconv จาก Li et al : DeepGCNS: GCNs สามารถไปได้ลึกเท่ากับ CNNs ได้หรือไม่? (ICCV 2019) และ DeeperGCN: สิ่งที่คุณต้องฝึก GCNs ที่ลึกกว่า (Corr 2020) [ ตัวอย่าง ]
- rect จาก Wang et al. : การฝังเครือข่ายด้วยฉลากที่สมบูรณ์แบบ (TKDE 2020) [ ตัวอย่าง ]
- Gnnexplainer จาก Ying และคณะ : gnnexplainer: การสร้างคำอธิบายสำหรับเครือข่ายประสาทกราฟ (Neurips 2019) [ ตัวอย่าง 1 , ตัวอย่าง 2 , ตัวอย่าง 3 ]
- เครือข่ายประสาทที่ไม่มีกราฟ จากจาง และคณะ : เครือข่ายประสาทแบบกราฟน้อย: การสอน MLP เก่าเทคนิคใหม่ผ่านการกลั่น (Corr 2021) [ ตัวอย่าง ]
- Linkx จาก Lim et al. : การเรียนรู้ขนาดใหญ่เกี่ยวกับกราฟที่ไม่ใช่ homophilous: เกณฑ์มาตรฐานใหม่และวิธีการง่าย ๆ ที่แข็งแกร่ง (Neurips 2021) [ ตัวอย่าง ]
- revgnn จาก Li et al. : การฝึกกราฟระบบประสาทด้วย 1,000 เลเยอร์ (ICML 2021) [ ตัวอย่าง ]
- Transe จาก Bordes และคณะ : การแปล EMBEDDINGS สำหรับการสร้างแบบจำลองข้อมูลหลายความสัมพันธ์ (NIPS 2013) [ ตัวอย่าง ]
- ซับซ้อน จาก Trouillon และคณะ : การฝังที่ซับซ้อนสำหรับการทำนายลิงก์อย่างง่าย (ICML 2016) [ ตัวอย่าง ]
- Distmult จาก Yang และคณะ : การฝังหน่วยงานและความสัมพันธ์สำหรับการเรียนรู้และการอนุมานในฐานความรู้ (ICLR 2015) [ ตัวอย่าง ]
- หมุน จาก Sun และคณะ : หมุน: การฝังกราฟความรู้โดยการหมุนเชิงสัมพันธ์ในพื้นที่ที่ซับซ้อน (ICLR 2019) [ ตัวอย่าง ]
ผู้ให้บริการและสาธารณูปโภค GNN: PYG มาพร้อมกับชุดผู้ให้บริการเครือข่ายประสาทที่ใช้กันทั่วไปซึ่งใช้กันทั่วไปในรุ่น GNN หลายรุ่น พวกเขาติดตามการออกแบบที่ขยายได้: เป็นเรื่องง่ายที่จะใช้ผู้ให้บริการและยูทิลิตี้กราฟเหล่านี้กับเลเยอร์ GNN และรุ่นที่มีอยู่เพื่อเพิ่มประสิทธิภาพของโมเดลต่อไป
- Dropedge จาก Rong และคณะ : Dropedge: ไปสู่เครือข่าย Deep Graph Convolutional ในการจำแนกโหนด (ICLR 2020)
- Dropnode , MaskFeature และ Addrandomedge จากคุณ และคณะ : กราฟการเรียนรู้ที่แตกต่างกันด้วยการเสริม (Neurips 2020)
- Droppath จาก Li et al. : Maskgae: การสร้างแบบจำลองกราฟแบบสวมหน้ากากตรงกับกราฟอัตโนมัติ (Arxiv 2022)
- Shufflenode จากVeličković และคณะ : Deep Graph Infomax (ICLR 2019)
- graphnorm จาก Cai และคณะ : graphnorm: แนวทางหลักในการเร่งการฝึกอบรมเครือข่ายประสาทกราฟ (ICML 2021)
- GDC จาก Klicpera และคณะ : การแพร่กระจายการเรียนรู้กราฟ (Neurips 2019) [ ตัวอย่าง ]
ขยายเพื่อดูผู้ให้บริการและสาธารณูปโภค GNN ที่ดำเนินการทั้งหมด ...
- GraphSizenorm จาก Dwivedi และคณะ : การเปรียบเทียบกราฟเครือข่ายประสาท (Corr 2020)
- pairnorm จาก Zhao และ Akoglu: Pairnorm: การจัดการกับการใช้งานมากเกินไปใน GNNS (ICLR 2020)
- MeansubtractionNorm จาก Yang และคณะ : การทบทวน "over-smoothing" ใน Deep GCNs (Corr 2020)
- Diffgroupnorm จาก Zhou และคณะ : ไปสู่เครือข่ายประสาทกราฟที่ลึกกว่าด้วยการทำให้เป็นมาตรฐานกลุ่มที่แตกต่างกัน (Neurips 2020)
- การสลายตัวของต้นไม้ จาก Jin et al. : junction tree variational autoencoder สำหรับการสร้างกราฟโมเลกุล (ICML 2018)
- TGN จาก Rossi และคณะ : เครือข่ายกราฟชั่วคราวสำหรับการเรียนรู้อย่างลึกซึ้งเกี่ยวกับกราฟแบบไดนามิก (GRL+ 2020) [ ตัวอย่าง ]
- Weisfeiler Lehman Operator จาก Weisfeiler และ Lehman: การลดกราฟลงในรูปแบบที่เป็นที่ยอมรับและพีชคณิตที่เกิดขึ้นในระหว่างการลดลงนี้ (Nauchno-Technicheskaya Informatsia 1968) [ ตัวอย่าง ]
- ผู้ดำเนินการ Weisfeiler Lehman อย่างต่อ เนื่องจาก Togninalli และคณะ : Wasserstein Weisfeiler-Lehman กราฟกราฟ (Neurips 2019)
- การแพร่กระจายฉลาก จาก Zhu และ Ghahramani: การเรียนรู้จากข้อมูลที่ติดฉลากและไม่มีป้ายกำกับพร้อมการแพร่กระจายฉลาก (CMU-Cald 2002) [ ตัวอย่าง ]
- โปรไฟล์ระดับท้องถิ่น จาก CAI และ Wang: พื้นฐานที่เรียบง่าย แต่มีประสิทธิภาพสำหรับการจำแนกกราฟที่ไม่ใช่เครื่องแสดง (Corr 2018)
- ถูกต้องและ Smooth จาก Huang และคณะ : การรวมการแพร่กระจายฉลากและแบบจำลองที่เรียบง่ายออกจากกราฟเครือข่ายประสาท (Corr 2020) [ ตัวอย่าง ]
- Gini และ Bro เป็นมาตรฐานจาก Henderson และคณะ : การปรับปรุงความสามารถในการอธิบายเครือข่ายประสาทของกราฟโมเลกุลด้วย orthonormalization และ sparsity ที่เหนี่ยวนำให้เกิด (ICML 2021)
- RootedEgonets และ rootedrwsubgraph จาก Zhao และคณะ : จากดาวถึงกราฟย่อย: ยกระดับ GNN ใด ๆ ด้วยการรับรู้โครงสร้างท้องถิ่น (ICLR 2022)
- Featurepropagation จาก Rossi และคณะ : เกี่ยวกับประสิทธิภาพที่ไม่สมเหตุสมผลของการเผยแพร่คุณสมบัติในการเรียนรู้บนกราฟที่มีคุณสมบัติโหนดที่หายไป (Corr 2021)
GNNS ที่ปรับขนาดได้: PYG รองรับการใช้งานเครือข่ายประสาทกราฟที่สามารถปรับขนาดเป็นกราฟขนาดใหญ่ แอปพลิเคชันดังกล่าวเป็นสิ่งที่ท้าทายเนื่องจากกราฟทั้งหมดคุณสมบัติที่เกี่ยวข้องและพารามิเตอร์ GNN ไม่สามารถปรับให้เข้ากับหน่วยความจำ GPU ได้ วิธีการปรับขนาดที่ล้ำสมัยจำนวนมากจัดการกับความท้าทายนี้โดยการสุ่มตัวอย่างย่านที่อยู่อาศัยสำหรับการฝึกอบรมมินิแบทช์การจัดกลุ่มกราฟและการแบ่งพาร์ติชันหรือโดยใช้โมเดล GNN ที่ง่ายขึ้น วิธีการเหล่านี้ได้ถูกนำไปใช้ใน PYG และสามารถได้รับประโยชน์จากเลเยอร์ GNN ตัวดำเนินการและรุ่นข้างต้น
- เพื่อนบ้าน Loadloader จาก Hamilton และคณะ : การเรียนรู้การเป็นตัวแทนอุปนัยบนกราฟขนาดใหญ่ (NIPS 2017) [ ตัวอย่าง 1 , ตัวอย่าง 2 , ตัวอย่าง 3 ]
- Clustergcn จาก Chiang และคณะ : Cluster-GCN: อัลกอริทึมที่มีประสิทธิภาพสำหรับการฝึกอบรมเครือข่ายกราฟที่ลึกและขนาดใหญ่ (KDD 2019) [ ตัวอย่าง 1 , ตัวอย่าง 2 ]
- กราฟ จากเซง และคณะ : GraphSaint: วิธีการเรียนรู้แบบกราฟการสุ่มตัวอย่าง (ICLR 2020) [ ตัวอย่าง ]
ขยายเพื่อดู GNNs ที่ปรับขนาดได้ทั้งหมด ...
- เงา จากเซง และคณะ : decoupling ความลึกและขอบเขตของกราฟประสาทเครือข่าย (Neurips 2021) [ ตัวอย่าง ]
- สัญญาณ จาก Rossi และคณะ : Sign: Scalable Inception Graph Networks Neural Networks (Corr 2020) [ ตัวอย่าง ]
- hgtloader จาก Hu et al. : หม้อแปลงกราฟที่แตกต่างกัน (www 2020) [ ตัวอย่าง ]
การติดตั้ง
PYG มีให้สำหรับ Python 3.9 ถึง Python 3.12
อนาคอนดา
ตอนนี้คุณสามารถติดตั้ง PYG ผ่าน Anaconda สำหรับชุดที่สำคัญทั้งหมด/pytorch/cuda? หากคุณยังไม่ได้ติดตั้ง pytorch ให้ติดตั้งผ่าน conda ตามที่อธิบายไว้ในเอกสาร Pytorch อย่างเป็นทางการ ระบุว่าคุณติดตั้ง pytorch ( >=1.8.0 ) เพียงแค่เรียกใช้
Pypi
จาก PYG 2.3 เป็นต้นไปคุณสามารถติดตั้งและใช้ PYG ได้โดยไม่ต้องใช้ไลบรารีภายนอกใด ๆ ยกเว้น Pytorch สำหรับสิ่งนี้เพียงแค่วิ่ง
pip install torch_geometric
ห้องสมุดเพิ่มเติม
หากคุณต้องการใช้ชุดคุณสมบัติเต็มรูปแบบจาก PYG มีห้องสมุดเพิ่มเติมอีกหลายแห่งที่คุณอาจต้องการติดตั้ง:
-
pyg-lib : ตัวดำเนินการ GNN ที่ต่างกันและการสุ่มตัวอย่างกราฟ -
torch-scatter : ลดการลดลงอย่างเบาบางและมีประสิทธิภาพ -
torch-sparse : SparseTensor สนับสนุน -
torch-cluster : รูทีนการจัดกลุ่มกราฟ -
torch-spline-conv : SplineConv รองรับ
แพ็คเกจเหล่านี้มาพร้อมกับการใช้งานเคอร์เนล CPU และ GPU ของตัวเองตาม Pytorch C ++/CUDA/HIP (ROCM) ส่วนต่อขยาย สำหรับการใช้ PYG ขั้นพื้นฐานการพึ่งพาเหล่านี้เป็น ทางเลือกอย่างสมบูรณ์ เราขอแนะนำให้เริ่มต้นด้วยการติดตั้งขั้นต่ำและติดตั้งการอ้างอิงเพิ่มเติมเมื่อคุณเริ่มต้องการพวกเขาจริง
เพื่อความสะดวกในการติดตั้งส่วนขยายเหล่านี้เรามีล้อ pip สำหรับชุดค่าผสม OS/Pytorch/Cuda ที่สำคัญทั้งหมดดูที่นี่
Pytorch 2.5
ในการติดตั้งไบนารีสำหรับ Pytorch 2.5.0 เพียงแค่เรียกใช้
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.5.0+${CUDA}.html
โดยที่ ${CUDA} ควรถูกแทนที่ด้วย cpu , cu118 , cu121 หรือ cu124 ขึ้นอยู่กับการติดตั้ง Pytorch ของคุณ
| cpu | cu118 | cu121 | cu124 |
|---|
| ลินเวกซ์ | | | | |
| หน้าต่าง | | | | |
| แม็กอส | | | | |
Pytorch 2.4
ในการติดตั้งไบนารีสำหรับ Pytorch 2.4.0 เพียงแค่เรียกใช้
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html
โดยที่ ${CUDA} ควรถูกแทนที่ด้วย cpu , cu118 , cu121 หรือ cu124 ขึ้นอยู่กับการติดตั้ง Pytorch ของคุณ
| cpu | cu118 | cu121 | cu124 |
|---|
| ลินเวกซ์ | | | | |
| หน้าต่าง | | | | |
| แม็กอส | | | | |
หมายเหตุ: ไบนารีของรุ่นเก่ามีไว้สำหรับ pytorch 1.4.0, pytorch 1.5.0, pytorch 1.6.0, pytorch 1.7.0/1.7.1, pytorch 1.8.0/1.8.1, pytorch 1.9.0 1.12.0/1.12.1, pytorch 1.13.0/1.13.1, pytorch 2.0.0/2.0.1, pytorch 2.1.0/2.1.1/2.1.2, pytorch 2.2.0/2.2.1/2.2.2 สำหรับรุ่นเก่าคุณอาจต้องระบุหมายเลขเวอร์ชันล่าสุดที่รองรับล่าสุด หรือติดตั้งผ่าน pip install --no-index เพื่อป้องกันการติดตั้งด้วยตนเองจากแหล่งที่มา คุณสามารถค้นหาหมายเลขเวอร์ชันที่รองรับล่าสุดได้ที่นี่
คอนเทนเนอร์ Nvidia Pyg
Nvidia จัดเตรียมคอนเทนเนอร์ PYG Docker สำหรับการฝึกอบรมอย่างง่ายดายและปรับใช้ GPU GNNs เร่งด้วย PYG ดูที่นี่
ทุกคืนและอาจารย์
ในกรณีที่คุณต้องการทดลองกับคุณสมบัติ PYG ล่าสุดที่ยังไม่ได้เปิดตัวเต็มรูปแบบไม่ว่าจะติดตั้ง PYG เวอร์ชันทุกคืน
หรือติดตั้ง PYG จาก Master Via
pip install git+https://github.com/pyg-team/pytorch_geometric.git
ล้อ ROCM
ที่เก็บ pyg-rocm-build ภายนอกให้ล้อและคำแนะนำโดยละเอียดเกี่ยวกับวิธีการติดตั้ง PYG สำหรับ ROCM หากคุณมีคำถามใด ๆ เกี่ยวกับเรื่องนี้โปรดเปิดปัญหาที่นี่
อ้างถึง
โปรดอ้างอิงกระดาษของเรา (และเอกสารที่เกี่ยวข้องของวิธีการที่ใช้) หากคุณใช้รหัสนี้ในงานของคุณเอง:
@inproceedings{Fey/Lenssen/2019,
title={Fast Graph Representation Learning with {PyTorch Geometric}},
author={Fey, Matthias and Lenssen, Jan E.},
booktitle={ICLR Workshop on Representation Learning on Graphs and Manifolds},
year={2019},
}
อย่าลังเลที่จะส่งอีเมลถึงเราหากคุณต้องการให้งานของคุณอยู่ในรายการทรัพยากรภายนอก หากคุณสังเกตเห็นสิ่งที่ไม่คาดคิดโปรดเปิดปัญหาและแจ้งให้เราทราบ หากคุณมีคำถามใด ๆ หรือขาดคุณสมบัติเฉพาะอย่าลังเลที่จะพูดคุยกับเรา เรามีแรงจูงใจที่จะทำให้ PYG ดียิ่งขึ้นอย่างต่อเนื่อง