【发布时间】:2017-08-17 15:48:04
【问题描述】:
我正在尝试为 AI 中的一个问题编写一个深度 q 学习网络。我有一个函数predict(),它产生一个形状为(None, 3)的张量,接受一个形状为(None, 5)的输入。 (None, 3) 中的 3 对应于每个状态下可以采取的每个动作的 q 值。现在,在训练步骤中,我必须多次调用predict() 并使用结果来计算成本并训练模型。为此,我还有另一个可用的数据数组,称为current_actions,它是一个列表,其中包含在先前迭代中为特定状态采取的操作的索引。
需要发生的是current_states_outputs 应该是从predict() 的输出创建的张量,其中每一行仅包含一个q 值(而不是predict() 的输出中的三个),并且其中q-值应该选择应该取决于current_actions的对应索引。
比如current_states_output = [[1,2,3],[4,5,6],[7,8,9]]和current_actions=[0,2,1],运算后的结果应该是[1,6,8](更新)
我该怎么做?
我已经尝试了以下 -
current_states_outputs = self.sess.run(self.prediction, feed_dict={self.X:current_states})
current_states_outputs = np.array([current_states_outputs[a][current_actions[a]] for a in range(len(current_actions))])
我基本上在predict() 上运行了会话,并使用普通的python 方法完成了所需的操作。但是因为这切断了成本与图的前几层的连接,所以无法进行任何训练。因此,我需要在 tensorflow 中执行此操作,并将所有内容保持为 tensorflow 张量本身。我该如何管理?
【问题讨论】:
标签: python tensorflow deep-learning artificial-intelligence q-learning