GNN со стабильными базовыми линиями

Я собираюсь использовать DGN или pytorch geometry для построения моей политики и сетей ценностей в стабильных базовых условиях, однако я изо всех сил пытаюсь понять, как отправлять наблюдения. Наблюдения должны быть одними из тренажерного зала spaces class, но я не уверен, как отправить объект графика, который может использоваться DGN или Pytorch геометрическим таким образом.

Фундаментальный вопрос, который у меня есть, заключается в том, как отправлять наблюдения за графом и где делать предварительную настройку, необходимую для использования DGN или pytorch geometry для настраиваемой стабильной базовой сети? Могу ли я упаковать график в стабильное пространство для наблюдения за базовыми линиями, которое каким-то образом могло бы принять DGN или геометрический pytorch?

Примечание: если у кого-то есть ссылка на github с каким-либо кодом, который сделал это, дайте мне знать, я везде искал

1 ответ

Вы можете сериализовать свой объект графа DGL с помощью pickle и преобразовать результирующую строку байтов в вектор целых чисел (каждый символ в строке соответствует одному int).

      import dgl
import numpy as np
import pickle

def serialize_graph(graph: dgl.DGLGraph):
    as_byte_string = pickle.dumps(graph)
    as_int_list = [_ for _ in as_byte_string]  # we get ints for free without explicitly casting
    as_float_array = np.array(as_int_list, dtype=np.float32)
    return as_float_array

Затем вы можете применить те же операции в обратном порядке, чтобы десериализовать векторное представление графика в вашем настраиваемом экстракторе функций.

      import dgl
import pickle
import torch as th

def deserialize_graph(observation: th.Tensor):
    as_int_tensor = observation.to(dtype=th.int32)
    as_char_list = [chr(_) for _ in observation]
    as_byte_string = bytearray(''.join(as_char_list), encoding='latin')
    as_dgl_graph = pickle.loads(as_byte_string)
    return as_dgl_graph
Другие вопросы по тегам