การใช้งาน Pytorch ของ เครือข่าย Neural กราฟแคปซูล (ICLR 2019)

การฝังโหนดคุณภาพสูงที่เรียนรู้จากเครือข่ายประสาท (GNNs) กราฟ (GNNs) ได้ถูกนำไปใช้กับแอพพลิเคชั่นที่ใช้โหนดที่หลากหลายและบางส่วนได้รับประสิทธิภาพที่ทันสมัย (SOTA) อย่างไรก็ตามเมื่อใช้การฝังของโหนดที่เรียนรู้จาก GNNs เพื่อสร้างการฝังกราฟการแสดงโหนดสเกลาร์อาจไม่เพียงพอที่จะรักษาคุณสมบัติของโหนด/กราฟได้อย่างมีประสิทธิภาพส่งผลให้ฝังกราฟที่ดีที่สุด เราได้รับแรงบันดาลใจจากเครือข่าย Neural Capsule (CAPSNET) เราเสนอเครือข่าย Neural กราฟแคปซูล (CAPSGNN) ซึ่งใช้แนวคิดของแคปซูลเพื่อจัดการกับจุดอ่อนในอัลกอริทึมการฝังกราฟกราฟ GNN ที่มีอยู่ ด้วยการแยกคุณสมบัติโหนดในรูปแบบของแคปซูลกลไกการกำหนดเส้นทางสามารถใช้เพื่อบันทึกข้อมูลที่สำคัญในระดับกราฟ เป็นผลให้แบบจำลองของเราสร้างการฝังตัวหลายตัวสำหรับแต่ละกราฟเพื่อจับคุณสมบัติกราฟจากด้านต่าง ๆ โมดูลความสนใจที่รวมอยู่ใน CAPSGNN ใช้ในการจัดการกราฟที่มีขนาดต่าง ๆ ซึ่งช่วยให้แบบจำลองสามารถมุ่งเน้นไปที่ส่วนที่สำคัญของกราฟ การประเมินที่กว้างขวางของเราด้วยชุดข้อมูลกราฟโครงสร้าง 10 ชุดแสดงให้เห็นว่า CAPSGNN มีกลไกที่ทรงพลังที่ทำงานเพื่อจับคุณสมบัติ macroscopic ของกราฟทั้งหมดโดยการขับเคลื่อนข้อมูล มันมีประสิทธิภาพเหนือกว่าเทคนิค SOTA อื่น ๆ ในงานการจำแนกกราฟหลายงานโดยอาศัยเครื่องมือใหม่
ที่เก็บนี้ให้การใช้งาน pytorch ของ capsgnn ตามที่อธิบายไว้ในกระดาษ:
เครือข่ายประสาทกราฟแคปซูล Zhang Xinyi, Lihui Chen ICLR, 2019. [กระดาษ]
Core Capsule Neural Network Adpited Adapted มีให้บริการ [ที่นี่]
Codebase ถูกนำไปใช้ใน Python 3.5.2 แพคเกจเวอร์ชันที่ใช้สำหรับการพัฒนาอยู่ด้านล่าง
networkx 2.4
tqdm 4.28.1
numpy 1.15.4
pandas 0.23.4
texttable 1.5.0
scipy 1.1.0
argparse 1.1.0
torch 1.1.0
torch-scatter 1.4.0
torch-sparse 0.4.3
torch-cluster 1.4.5
torch-geometric 1.3.2
torchvision 0.3.0
รหัสใช้กราฟสำหรับการฝึกอบรมจากโฟลเดอร์อินพุตที่แต่ละกราฟถูกเก็บไว้เป็น JSON กราฟที่ใช้สำหรับการทดสอบจะถูกจัดเก็บเป็นไฟล์ JSON ทุกโหนด ID และฉลากโหนดจะต้องจัดทำดัชนีจาก 0 คีย์ของพจนานุกรมจะถูกเก็บไว้สตริงเพื่อให้การทำให้เป็นอนุกรม JSON เป็นไปได้
ไฟล์ JSON ทุกไฟล์มีโครงสร้างคีย์-ค่าต่อไปนี้:
{ "edges" : [ [ 0 , 1 ] , [ 1 , 2 ] , [ 2 , 3 ] , [ 3 , 4 ] ] ,
"labels" : { "0" : "A" , "1" : "B" , "2" : "C" , "3" : "A" , "4" : "B" } ,
"target" : 1 }ปุ่ม ** Edges ** มีค่ารายการขอบซึ่ง descibes โครงสร้างการเชื่อมต่อ คีย์ ** ป้ายกำกับ ** มีป้ายกำกับสำหรับแต่ละโหนดซึ่งถูกเก็บไว้เป็นพจนานุกรม - ภายในฉลากพจนานุกรมที่ซ้อนกันนี้คือค่าตัวระบุโหนดเป็นคีย์ ปุ่ม ** Target ** มีค่าจำนวนเต็มซึ่งเป็นสมาชิกชั้นเรียน
การคาดการณ์จะถูกบันทึกไว้ในไดเรกทอรี `เอาต์พุต/` การฝังแต่ละครั้งมีส่วนหัวและคอลัมน์ที่มีตัวระบุกราฟ ในที่สุดการคาดการณ์จะถูกจัดเรียงตามคอลัมน์ตัวระบุ
การฝึกอบรมโมเดล capsgnn ได้รับการจัดการโดยสคริปต์ `src/main.py` ซึ่งให้อาร์กิวเมนต์บรรทัดคำสั่งต่อไปนี้
--training-graphs STR Training graphs folder. Default is `input/train/`.
--testing-graphs STR Testing graphs folder. Default is `input/test/`.
--prediction-path STR Output predictions file. Default is `output/watts_predictions.csv`.
--epochs INT Number of epochs. Default is 100.
--batch-size INT Number fo graphs per batch. Default is 32.
--gcn-filters INT Number of filters in GCNs. Default is 20.
--gcn-layers INT Number of GCNs chained together. Default is 2.
--inner-attention-dimension INT Number of neurons in attention. Default is 20.
--capsule-dimensions INT Number of capsule neurons. Default is 8.
--number-of-capsules INT Number of capsules in layer. Default is 8.
--weight-decay FLOAT Weight decay of Adam. Defatuls is 10^-6.
--lambd FLOAT Regularization parameter. Default is 0.5.
--theta FLOAT Reconstruction loss weight. Default is 0.1.
--learning-rate FLOAT Adam learning rate. Default is 0.01.
คำสั่งต่อไปนี้เรียนรู้แบบจำลองและบันทึกการคาดการณ์ การฝึกอบรมแบบจำลองในชุดข้อมูลเริ่มต้น:
$ python src/main.py
การฝึกอบรมแบบจำลอง capsgnnn สำหรับ 100 ยุค
$ python src/main.py --epochs 100การเปลี่ยนขนาดแบทช์
$ python src/main.py --batch-size 128ใบอนุญาต