【发布时间】:2018-04-06 11:36:24
【问题描述】:
我正在尝试实现一个播放 Doom 的 Deep Q 网络(vizdoom)
但是我(从昨天开始)被一种热编码的问题及其后果所困扰:事实上,我有 3 种可能的操作是这样编码的
[[True, False, False], [False, True, False], [False, False, True]] size = [Batch_size, 3]
当我对这个动作数组进行 one_hot 编码时,我得到一个大小为 [BatchSize, 3, 3] 的数组
当我想计算我的 Q 值估计时:
Q = tf.reduce_sum(tf.multiply(self.output, self.actions_one_hot), axis=1)
tf.multiply(self.output, self.actions_one_hot) 产生错误:
InvalidArgumentError: Incompatible shapes: [10,3] vs. [10,3,3]
[[Node: DQNetwork/Mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](DQNetwork/dense/BiasAdd, DQNetwork/one_hot)]]
我知道这 2 个要相乘的形状不兼容,但我不明白我必须做什么才能使它们兼容。
为了更清楚this is the notebook with each part explained:
我确信我犯了一个非常愚蠢的错误,但我没有看到它。
感谢您的帮助!
【问题讨论】:
标签: python tensorflow deep-learning reinforcement-learning