Tensorflow CPU上的变量、GPU上的训练/梯度

Tensorflow CPU上的变量、GPU上的训练/梯度,tensorflow,Tensorflow,在CIFAR-10教程中,我注意到变量被放置在CPU内存中,但它是用单个GPU进行训练的 我很困惑。。图层/激活是否存储在GPU中?或者,梯度是否存储在GPU中?否则,在CPU上存储变量似乎根本不会使用GPU——所有内容都存储在CPU内存中,因此只有CPU用于向前/向后传播 如果GPU用于f/b传播,由于延迟洗牌数据CPU GPU,这不是一种浪费吗?事实上,在cifar10系列中,激活和梯度在GPU上,只有参数在CPU上。您是对的,由于在CPU和GPU之间复制参数的成本,这对于单个GPU培训不是

在CIFAR-10教程中,我注意到变量被放置在CPU内存中,但它是用单个GPU进行训练的

我很困惑。。图层/激活是否存储在GPU中?或者,梯度是否存储在GPU中?否则,在CPU上存储变量似乎根本不会使用GPU——所有内容都存储在CPU内存中,因此只有CPU用于向前/向后传播


如果GPU用于f/b传播,由于延迟洗牌数据CPU GPU,这不是一种浪费吗?

事实上,在cifar10系列中,激活和梯度在GPU上,只有参数在CPU上。您是对的,由于在CPU和GPU之间复制参数的成本,这对于单个GPU培训不是最佳的。我怀疑这样做的原因是为单GPU和多GPU模型提供了一个库,就像在多GPU的情况下一样,在CPU上设置参数可能会更快。通过将所有变量移动到GPU,您可以轻松测试可以获得的加速比,只需删除cifar10.py中“\u variable\u on\u cpu”中的“with tf.device('/cpu:0')”