q估计值那,为什么做什么切片,没听明白,老师能讲明白原理吗

来源:7-13 Deep Q Learning 实现迷宫游戏:决策算法(3)

Jerry_Lnj

2019-12-16

    # 在 Q_eval_net 中,计算状态 s_j 的估计 Q 值
    with tf.variable_scope('Q_eval'):
        a_indices = tf.stack([tf.range(tf.shape(self.a)[0], dtype=tf.int32), self.a], axis=1)
        # tf.gather_nd 用 indices 定义的形状来对 params 进行切片
        self.q_eval_by_a = tf.gather_nd(params=self.q_eval, indices=a_indices)

这里为什么要做什么切片,没听懂,老师让我们去官网插。但是为什么需要做这些处理,官网也没有,只有函数功能。能否解释一下

写回答

1回答

Oscar

2019-12-17

根据 Deep Q Network 的推导公式,和 tf.gather_nd 的方法定义。

切片是 slicing 的翻译,请看上面 tf.gather_nd 的文档。

1
2
Jerry_Lnj
我搞懂了,我搞错self.a,我以为self.a是[0,1,2,3]是四个动作对应的数字,其实应该是每个样本所选取的动作,维度应该是[None, ]。获得每个样本选取动作的a_indices, 再去eval网络算出来的q_eval做一个gather_nd,获得Q_eval网络对应该样本选取动作的Q值
2019-12-18
共2条回复

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程