基线稳定的GNN



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

我的基本问题是如何发送图形观察,以及在哪里做必要的改进,以使用DGL或pytorch几何自定义稳定的基线网络?我是否可以将图形打包到一个稳定的基线观察空间中,以便DGL或pytorch geometric能够接收它?

注意:如果有人有一个github链接与任何代码已经这样做了,请让我知道,我已经看了到处

您可以使用pickle序列化您的DGL图形对象,并将生成的字节字符串转换为整数向量(字符串中的每个字符对应一个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

相关内容

  • 没有找到相关文章

最新更新