我想用简单的DQN算法在Cartpole环境中测试multi-gpu,看来这是不可能的,或者我缺少了一些东西。我在有两个GPU的机器上运行代码。我在这里有我的代码: https://github.com/oroojlooy/dqn_pytorch
问题在于,在每个训练步骤中,我需要获取目标值(这是一个DataParallel对象),然后将其乘以批处理中的某些元素(即张量),然后使用输出来获取损失。当我将目标值乘以张量时,出现此错误:
RuntimeError: The size of tensor a (64) must match the size of tensor b (128) at non-singleton dimension 1
由于DataParallel
将批次分为两部分,因此目标形状为2*64
,而不是128
。我可以将张量重塑为2*64
并使其起作用,但是如果我有更多的GPU,重塑将是困难而混乱的,那将是行不通的。我认为应该有更好的方法来做到这一点。
感谢您的帮助或评论。
Afshin