TensorFlow如何通过tf.device函数来指定运行每一个操作的设备?

TensorFlow程序可以通过tf.device函数来指定运行每一个操作的设备。

这个设备可以是本地的CPU或者GPU,也可以是某一台远程的服务器。

TensorFlow会给每一个可用的设备一个名称,tf.device函数可以通过设备的名称,来指定执行运算的设备。比如CPU在TensorFlow中的名称为/cpu:0。

在默认情况下,即使机器有多个CPU,TensorFlow也不会区分它们,所有的CPU都使用/cpu:0作为名称。

–而一台机器上不同GPU的名称是不同的,第n个GPU在TensorFlow中的名称为/gpu:n。

–比如第一个GPU的名称为/gpu:0,第二个GPU名称为/gpu:1,以此类推。

–TensorFlow提供了一个快捷的方式,来查看运行每一个运算的设备。

–在生成会话时,可以通过设置log_device_placement参数来打印运行每一个运算的设备。

请看下面例子:

下面程序展示了log_device_placement参数的使用,在机器上直接运行代码:

–import tensorflowas tf

–a = tf.constant([1.0, 2.0, 3.0], shape=[3], name=‘a‘)

–b = tf.constant([1.0, 2.0, 3.0], shape=[3], name=‘b‘)

–c = a + b

–# 通过log_device_placement参数来输出运行每一个运算的设备。

–sess= tf.Session(config=tf.ConfigProto(log_device_placement=True))

–print sess.run(c)

在以上代码中,TensorFlow程序生成会话时加入了参数log_device_placement=True,所以程序会将运行每一个操作的设备输出到屏幕。

–除了可以看到最后的计算结果之外,还可以看到类似“add: /job:localhost/replica:0/task:0/cpu:0”这样的输出

–这些输出显示了执行每一个运算的设备。比如加法操作add是通过CPU来运行的,因为它的设备名称中包含了/cpu:0。

–在配置好GPU环境的TensorFlow中,如果操作没有明确地指定运行设备,那么TensorFlow会优先选择GPU。

在没有GPU的机器上运行,以上代码得到以下输出:

–Device mapping: no known devices.

–add: /job:localhost/replica:0/task:0/cpu:0

–b: /job:localhost/replica:0/task:0/cpu:0

–a: /job:localhost/replica:0/task:0/cpu:0

–[ 2. 4. 6.]

–‘‘‘

时间: 2024-08-05 06:32:19

TensorFlow如何通过tf.device函数来指定运行每一个操作的设备?的相关文章

tf.slice()函数详解(极详细)

目录 1.官方注释 2.参数解释 3.例子 参考 tf.slice()是TensorFlow库中分割张量的一个函数,其定义为def slice(input_, begin, size, name=None):.tf.slice()函数的那些参数设置实在是不好理解,查了好多资料才理解,所以这边记录一下. 1.官方注释 官方的注释如下: """Extracts a slice from a tensor. This operation extracts a slice of si

【Tensorflow】(tf.Graph)和(tf.session)

图(tf.Graph):计算图,主要用于构建网络,本身不进行任何实际的计算. 会话(tf.session):会话,主要用于执行网络.所有关于神经网络的计算都在这里进行,它执行的依据是计算图或者计算图的一部分,同时,会话也会负责分配计算资源和变量存放,以及维护执行过程中的变量. Tensorflow的几种基本数据类型: tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False) tf.Variable(i

tensorflow中 tf.reduce_mean函数

tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值. 参考:https://blog.csdn.net/dcrmg/article/details/79797826 原文地址:https://www.cnblogs.com/yibeimingyue/p/11517034.html

TensorFlow中的L2正则化函数:tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()的用法与异同

tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()都是TensorFlow中的L2正则化函数,tf.contrib.layers.l2_regularizerd()函数在tf 2.x版本中被弃用了. 两者都能用来L2正则化处理,但运算有一点不同. import tensorflow as tf sess = InteractiveSession() a = tf.constant([1, 2, 3], dtype=tf.float32) b =

tensorflow节点布放(device assignment of node)算法:simpler_placer

tensorflow v0.9中目前在用的devcie assignment算法是simple placer算法,相比于白皮书中cost model算法实现简单.simpler placer算法优先选择/gpu:0设备, 但不支持 multi gpu assignment. 白皮书提到的cost model可以根据设备资源代价.数据传输代价平衡分配设备,在v0.9版本中有部分实现,但还未开放使用,见 core/graph/costmodel.cc simple_placer的实现代码在文件pyt

tf.slice函数解析

tf.slice函数解析 觉得有用的话,欢迎一起讨论相互学习~Follow Me tf.slice(input_, begin, size, name = None) 解释 :这个函数的作用是从输入数据input中提取出一块切片,切片的尺寸是size,切片的开始位置是begin. 切片的尺寸size表示输出tensor的数据维度,其中size[i]表示在第i维度上面的元素个数. 开始位置begin表示切片相对于输入数据input_的每一个偏移量,比如数据input_是 [[[1, 1, 1],

tf.transpose函数的用法讲解

tf.transpose函数中文意思是转置,对于低维度的转置问题,很简单,不想讨论,直接转置就好(大家看下面文档,一看就懂). tf.transpose(a, perm=None, name='transpose') Transposes a. Permutes the dimensions according to perm. The returned tensor's dimension i will correspond to the input dimension perm[i]. If

tf,cond()函数

tensorflow里面有太多的函数功能,完全像是新学一门语言,所以打算采用,遇到不会的函数就记录下来,作为自己的函数手册.这篇要讲的就是tf,cond(). tf,cond(A,B,C) 就像是条件语句:if A: B else:C,举个例子: z = tf.multiply(a, b) result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y)) 解读一下这个官方的例子,首先是给z赋值了一个简单的乘法函数,然后调用tf

为过程或函数sp_Adduser指定了过多的参数

前些天写用户注册模块,用存储过程添加用户,一开始就报“为过程或函数sp_Adduser指定了过多的参数”.仔细检查数据层的用户添加函数,结果在为存储过程添加sqlparameter参数的时候,数组给写错位了(参数太多).改正后,编译执行,结果还是报“为过程或函数sp_Adduser指定了过多的参数”.自己把存储过程程序对照了好几遍,没问题.到网上搜索,原来在执行存储过程的时候,如果以sp开头,用户创建的存储过程,总会先检查master数据库(即使该存储过程已用数据库名称限定).   如果用户创建