在Tensorflow 1.14中,我试图使用tf.data.experimental.prefetch_to_device(device=...)将数据预取到GPU。 但是我并不总是在GPU上训练,我经常在CPU上训练(尤其是在开发过程中)。

有没有办法使用当前的默认设备? Tensorflow要么选择CPU(当我设置CUDA_VISIBLE_DEVICES=-1 ),否则它将选择GPU,默认情况下通常有效。

到目前为止,我只能找到一种使用sess.list_devices()列出可见设备的方法,但是必须有一种查询当前默认设备的方法,因此我不必每次都在prefetch_to_device手动对其进行更改,对吗?

#1楼 票数:3 已采纳

目前没有API可以完成您所说的事情。 最近的

device = 'gpu:0' if tf.test.is_gpu_available() else 'cpu'

你已经说过了

我认为如此的原因是分配是在较低级别完成的: https : //github.com/tensorflow/tensorflow/blob/cf4dbb45ffb4d6ea0dc9c2ecfb514e874092cd16/tensorflow/core/common_runtime/colocation_graph.cc

也许您也可以尝试soft placement

希望能帮助到你。

#2楼 票数:3

到目前为止,我发现的最佳解决方案是使用tf.test.is_gpu_available

device = 'gpu:0' if tf.test.is_gpu_available() else 'cpu'

  ask by David Parks translate from so

未解决问题?本站智能推荐:

2回复

TensorFlow设备名称的详细组成?

什么是设备名称中的“后缀”,例如Allocators 、 Compute和Tensors ,如下所示: 这些是针对给定 CPU 上的进程(或线程)吗? 但是对于第一种没有指定 CPU 的情况呢? 顺便说一句,我已经看到timeline.json (从Timeline序列化)中报告的这些示例。
1回复

多GPU上的默认Tensorflow设备

如果我在多GPU平台上使用一个GPU运行一个tensorflow模型(例如cifar10),则tensorflow会在所有可用GPU上创建并广播(训练/推理)数据。 由于我将num_gpus设置为1,因此它仅在一个GPU上运行。 但是,我也可以在其他GPU上看到相同的过程。 有意吗 有什
2回复

graphcoreIPU的Linux/dev/ipu*设备名称的含义和目的是什么?

为什么我要像下面的命令一样在ipu4_ex同时指定ipu4和ipu4_ex来使用ipu设备?
4回复

TensorFlow:按名称获取变量

使用 TensorFlow Python API 时,我创建了一个变量(没有在构造函数中指定其name ),其name属性的值为"Variable_23:0" 。 当我尝试使用tf.get_variable("Variable23")选择此变量时,会创建一个名为"Variable_23_1:0"的新
4回复

Tensorflow:如何按名称获取张量?

我无法按名称恢复张量,我什至不知道是否可能。 我有一个创建图形的函数: 我想在这个函数之外访问变量 S1_conv1。 我试过: 但这给了我一个错误: ValueError: Under-sharing: Variable scale_1/Scale1_first_relu 不存在,不允许。 您的
1回复

**StreamExecutor设备(0):主机,Tensorflow中的默认版本**

我正在尝试在本地计算机上执行 tensorflow 脚本。 但出现以下警告。 如果有人可以指定此警告的常见原因是什么,那将非常有帮助。 我尝试跟踪我的代码,这是给出错误的行: 我使用导入load_model
1回复

Tensorflow:如何从Tensorboard获取张量名称?

我从 tensorflow detection model zoo 下载了一个ssd_mobilenet_v2_coco 。 我使用import_pb_to_tensorboard.py在Tensorboard上显示结构。 我找到了一个名为“image_tensor”的节点,这是 Tensorboa
3回复

如何获取当前的TensorFlow名称范围

我使用tf.name_scope创建相对名称范围。 如何获得当前的绝对名称范围? 从代码来看,看起来tf.get_default_graph()._name_stack会给我这些,但这看起来像是一种非官方的方式。 有什么官方的方法吗? (我认为不是,因此我提出了上游功能要求 。)