0

我希望使用DGL或 pytorch 几何在稳定的基线中构建我的策略和价值网络,但是我正在努力弄清楚如何发送观察结果。观察结果必须是体育课之一,spaces但我不确定如何以这种方式发送可由 DGL 或 Pytorch 几何使用的图形对象。

我遇到的基本问题是如何发送图形观察结果以及在哪里进行必要的预处理以将 DGL 或 pytorch 几何用于自定义稳定基线网络?我可以将图表打包到一个稳定的基线观察空间中,以某种方式 DGL 或 pytorch 几何可以吸收它吗?

注意:如果有人有任何代码的 github 链接,请告诉我,我到处找

4

1 回答 1

2

您可以使用 pickle 序列化您的 DGL 图形对象并将生成的字节字符串转换为整数向量(字符串中的每个 char 对应一个 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
于 2021-09-07T14:12:23.380 回答