我对DeepMind的DQN有一个非常忠诚的TensorFlow实现,它遇到了“内存不足”(OOM)错误。这显然是从体验重播中获得的,但是问题是我似乎无法分配我的内存来处理重播。如下所示,我在初始化时以及每次引用它时都将重播内存分配给cpu。
with tf.device('CPU:0'):
self.replay_memory = replay_memory(cfg)
with tf.device('CPU:0'):
# Fetch batch of experiences
s0, logits, rewards, s1 = self.replay_memory.fetch()
with tf.device('CPU:0'):
# Populate memory with experiences
self.replay_memory.push([s0, logits, reward, s1])
但是它仍然会遇到GPU OOM错误。我有32克的ram和一个含8克的vram的gtx 1070。仅当我允许我的重放内存的大小达到> 10000时,才会发生此错误。对于(32、84、84、4)的输入尺寸,我的批处理大小为32。
那么with tf.device('CPU:0')
为何仍在使用GPU内存?