2

我正在尝试采用由 Unity ML-Agents 训练的模型并在 Tensorflow / Keras 中运行推理。关于如何做到这一点的任何提示?

我尝试将冻结的图形文件加载到 TF 图形中,然后提取输入/输出张量。我假设 vector_observation 是输入操作,而 action 是输出操作。

x = graph.get_tensor_by_name('prefix/vector_observation:0')
y = graph.get_tensor_by_name('prefix/action:0')

然后我试图输入我在 Unity (AddVectorObs) 上的输入......

with tf.Session(graph=graph) as sess:
    y_out = sess.run(y, feed_dict={
            x: [[5, 5, 30, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36, False, False, False, False, False, False,True,False,False,False, True, False, False]]
        })

但它在运行时给了我一个关于 action_mask 的错误。

InvalidArgumentError: You must feed a value for placeholder tensor 'prefix/action_masks' with dtype float and shape [?,6]
     [[Node: prefix/action_masks = Placeholder[dtype=DT_FLOAT, shape=[?,6], _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

我可能的输出是这样的 2 个分支:[0,1,2];[0,1,2]... 所以我想这就是为什么它说 action_masks 的形状为 6。

我对 Tensorflow 很陌生,如果我错过了一些愚蠢的事情,我深表歉意。谢谢!

这是神经网络格式的图片:

神经网络输入张量

神经网络架构

4

0 回答 0