TensorFlow2中Tensor与已加载Keras Datasets的默认存放位置是GPU还是CPU?
TensorFlow 2 默认存储位置说明
普通Tensor的默认存放位置
- 只要你安装的是GPU版TensorFlow,且CUDA、CUDNN环境配置没有问题,新创建的Tensor默认会直接放到可用的第一个GPU上。
- 没有可用GPU环境的情况下,Tensor才会默认存放到CPU。
- 特殊情况:如果某个运算没有对应的GPU实现,TensorFlow会自动把涉及的Tensor切回CPU处理,不需要手动调整。
你可以运行下面的代码快速验证Tensor的存放设备:
import tensorflow as tf test_tensor = tf.constant([1, 2, 3]) print(test_tensor.device)
输出带GPU:0就说明存放在GPU,带CPU:0就是存放在CPU。
加载完成的Keras Datasets默认存放位置
- 不管有没有可用GPU,Keras内置数据集加载完成后,默认全部存放在CPU内存中,不会自动迁移到GPU显存。
- 这个设计是因为绝大多数数据集体积都远大于GPU显存上限,直接全部放显存很容易触发OOM报错,所以默认仅在训练时按批次把需要运算的批次数据拷贝到GPU。
- 如果你的数据集本身非常小,想要全量放到GPU提速,可以手动调用
tf.data.experimental.copy_to_device()方法转移整个数据集。
内容的提问来源于stack exchange,提问作者Jaidev Shah
相关产品推荐
相关产品推荐

