在DQN上的OpenAI基线代码中,tf.stop_gradient
在构建操作图期间用于目标网络的q值,以防止目标q值的贡献最小化损失。 (第213行)
但是,在调用minimize
时,var_list
被指定为tf.Variable
,其范围属于正在优化的q网络,不包括目标q网络下范围的变量。 (第223行)
我不确定为什么他们两个都这样做。这两种方法似乎都取得了相同的结果。
答案 0 :(得分:2)
这是多余的。 IMO代码读得更好 - 你知道渐变不会流过那个表达式,你也知道哪些变量会受到影响。
确实可以达到同等效果。