Настроить функцию send для отправки сообщения от исходного узла к целевому узлу. На втором этапе функция recv отвечает за объединение сообщений $\oplus$ из разных источников.
Чтобы написать сумматор, пользователям нужно написать следующие коды:
import pgl
import paddle
import numpy as np
num_nodes = 5
edges = [(0, 1), (1, 2), (3, 4)]
feature = np.random.randn(5, 100).astype(np.float32)
g = pgl.Graph(num_nodes=num_nodes,
edges=edges,
node_feat={
"h": feature
})
g.tensor()
def send_func(src_feat, dst_feat, edge_feat):
return src_feat
def recv_func(msg):
return msg.reduce_sum(msg["h"])
msg = g.send(send_func, src_feat=g.node_feat)
ret = g.recv(recv_func, msg)
Графы удобно представляют отношения между объектами реального мира, но категории объектов и отношений между ними разнообразны. Поэтому в гетерогенном графе необходимо различать типы узлов и рёбер в сети графа. Модели PGL поддерживают гетерогенные графы, которые содержат несколько типов узлов и несколько типов рёбер, и могут описывать сложные связи между различными типами.
На рисунке выше слева изображена социальная сеть покупок. Узлы имеют две категории пользователей и товаров, а также отношения между пользователями и пользователями, пользователями и товарами, товарами и товарами. Справа на рисунке показан простой процесс выборки MetaPath. Когда вы вводите любой MetaPath как UPU (пользователь-продукт-пользователь), вы получите следующие результаты.
Затем на этой основе и с использованием word2vec и других методов можно поддерживать изучение metapath2vec и другие алгоритмы представления гетерогенного графа.
Поскольку на гетерогенном графе есть разные типы узлов, доставка сообщений также различается. Как показано слева, у него пять соседей, принадлежащих двум разным типам узлов. Как показано справа на рисунке выше, узлы, принадлежащие к разным типам, должны агрегироваться отдельно во время доставки сообщений, а затем объединяться в окончательное сообщение для обновления целевого узла. На этой основе PGL поддерживает алгоритмы гетерогенного графа, основанные на передаче сообщений, такие как GATNE и другие.
В большинстве случаев крупномасштабного обучения графов нам требуется распределённое хранение графов и поддержка распределённого обучения. Как показано на следующем рисунке, PGL предоставляет общее решение для крупномасштабного обучения, мы использовали PaddleFleet в качестве наших распределённых серверов параметров, который поддерживает крупномасштабные распределённые вложения и облегчённый механизм распределённого хранилища, поэтому можно легко настроить крупномасштабный распределённый алгоритм обучения с кластерами MPI.
Следующие модели обучения графа были реализованы в рамках. Вы можете найти больше примеров и подробности здесь.
Модель | Характеристика |
---|---|
ERNIESage | |
GCN | Графовые свёрточные нейронные сети |
GAT | Сеть внимания графа |
GraphSage | Графовая свёрточная сеть большого масштаба, основанная на выборке окрестностей |
unSup-GraphSage | Неконтролируемый GraphSAGE |
LINE | Обучение представлению на основе соседей первого и второго порядка |
DeepWalk | Обучение представлению методом случайного блуждания DFS |
MetaPath2Vec | Обучение представлению на основе метапути |
Node2Vec | Метод обучения представлению, сочетающий DFS и BFS |
Struct2Vec | Обучение представлению на основе структурного сходства |
SGC | Упрощённая графовая свёрточная нейронная сеть |
GES | Метод представления графа с учётом признаков узлов |
DGI | Неконтролируемое обучение представлению на основе графовой свёрточной сети |
GATNE | Обучение представлению гетерогенного графа на основе передачи сообщений |
Вышеупомянутые модели состоят из трёх частей: обучение представлению графа, графовые нейронные сети и обучение представлению гетерогенного графа. Эти части также делятся на обучение представлению графа и графовые нейронные сети.
Для PGL требуются:
PGL поддерживает только Python 3.
Вы можете просто установить его через pip.
pip install pgl
Разработчиками и сопровождающими PGL являются команды NLP и Paddle в Baidu.
Электронная почта: nlp-gnn[at]baidu.com
PGL использует Apache License 2.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )