tf.device是tf.Graph.device()的一个包装,是一个用于指定新创建的操作(operation)的默认设备的环境管理器。参数为device_name_or_function,可以传入一个设备字符串或者环境操作函数,如tf.DeviceSpec。
    
  • 不过,如果传入的是一个设备名称字符串,那么在此环境中构造的所有操作都将被分配给带有该名称的设备,除非被其他嵌套的设备环境(其他的tf.device)所覆盖。
  • 如果传入的是一个函数,它将被当作一个从操作对象到设备名称字符串的函数,并在每次创建新操作时调用它。操作将被分配给带有返回名称的设备。
  • 如果是None,所有的来自代码段上下文的设备调用将被忽略。
 
 with g.device('/device:GPU:0'):
# All operations constructed in this context will be placed
# on GPU 0.
with g.device(None):
# All operations constructed in this context will have no
# assigned device. # Defines a function from `Operation` to device string.
def matmul_on_gpu(n):
if n.type == "MatMul":
return "/device:GPU:0"
else:
return "/cpu:0" with g.device(matmul_on_gpu):
# All operations of type "MatMul" constructed in this context
# will be placed on GPU 0; all other operations will be placed
# on CPU 0.
    另外,API文档也警告说:
    设备范围可能被op包装器或其他库代码覆盖。例如,变量赋值操作v .assign()必须与tf.Variable变量v一起使用,如果变量v和不兼容的设备嵌套将被忽略。
 
    tf.DeviceSpec返回的是部分或者全部的设备指定,在整个graph中来描述状态存储和计算发生的位置,并且允许解析设备规范的字符串,以验证它们的有效性、合并它们或以编码方式组合它们。
 # Place the operations on device "GPU:0" in the "ps" job.
device_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
with tf.device(device_spec):
# Both my_var and squared_var will be placed on /job:ps/device:GPU:0.
my_var = tf.Variable(..., name="my_variable")
squared_var = tf.square(my_var)
如果一个DeviceSpec被部分指定,将根据定义的范围与其他DeviceSpecs合并,在内部内定义的DeviceSpec组件优先于在外层内定义的组件。
with tf.device(DeviceSpec(job="train", )):
with tf.device(DeviceSpec(job="ps", device_type="GPU", device_index=0):
# Nodes created here will be assigned to /job:ps/device:GPU:0.
with tf.device(DeviceSpec(device_type="GPU", device_index=1):
# Nodes created here will be assigned to /job:train/device:GPU:1.
 
参数:
  • Job: 作业名称
  • Replica: 用于复制job的索引.
  • Task: 任务索引.
  • Device type: 设备类型 ("CPU" or "GPU").
  • Device index: 设备索引,如果未指定,则可以使用任意的设备。
方法:
from_string:
    接收一个如下形式的字符串:
         /job:/replica:/task:/device:CPU
         /job:/replica:/task:/device:GPU
    其中CPU和GPU是互相排斥的,用于
merge_from:
    将另外一个“DeviceSpec”的属性合并到当前DeviceSpec中。
parse_from_string:
    将DeviceSpec名称(字符串)解析为组件。
to_string:
    返回DeviceSpec的字符串。
 
 

Tensoflow API笔记(N) 设备指定的更多相关文章

  1. Windows phone 8 学习笔记(7) 设备

    原文:Windows phone 8 学习笔记(7) 设备 本节主要涉及到 Windows phone 8 手机支持的各类设备,包括相机.设备状态,振动装置等.还有各类感应器,包括磁力计.加速度器和陀 ...

  2. CentOS学习笔记--SCSI 设备热插拔

    CentOS学习笔记--SCSI 设备热插拔 处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢? 首先需要查看一下设备: #cat /proc/s ...

  3. Python Socket API 笔记

    将上节中的C#该成Python版的容易程度大大超出了我的意料之外.从来没有发现,仅仅用灰尘简单的几句话就实现了该程序的主要功能,可见python的简易和强大之处.这里先对SocketAPI 做一下总结 ...

  4. Xenko基础API笔记3- Pointers指针设备屏幕上点对应的手指触摸。

    样本这里是一个简单的示例程序,跟踪目前在屏幕上的指针和打印他们的位置.访问输入字段,类继承自@ SiliconStudio.Xenko.脚本的类. public override async Task ...

  5. Windows phone 8 学习笔记(7) 设备(转)

    本节主要涉及到 Windows phone 8 手机支持的各类设备,包括相机.设备状态,振动装置等.还有各类感应器,包括磁力计.加速度器和陀螺仪.通过设备状态可以获取内存.硬件.电源.键盘等状态:通过 ...

  6. 实战DeviceIoControl 之中的一个:通过API訪问设备驱动程序

    P.bhw98 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 10px 0 ...

  7. JS全部API笔记

    我相信对于程序猿都有做笔记的习惯. 我初学到现在也做了不少笔记,以前,总是怕写的文章或者好的内容分享出来就怕被直接copy以后更个名就不再是你的. 但通过博客园,学习到不少东西,人家都不怕什么了,我自 ...

  8. UICollectionView基础API笔记

    UICollectionView系列API,属性含义笔记.在UICollectionView笔记1中我们了解了UICollectionView是什么,以及可以做什么:在UICollectionView ...

  9. robot API笔记6

    robot.libraries 计划举办机器人框架标准测试库. 图书馆是主要用于外部的测试数据,但是他们可以 也使用自定义测试库是否有必要. 特别是 的内装式 图书馆通常是有用的 当需要与框架. 因为 ...

随机推荐

  1. Linux开始结束ping命令

    ctrl+c可以终止ping ctrl+z可以暂停ping,该暂停只是把进程放到后台去了,使用命令fg可以调出到前台来 通过以下命令可以设置次数: ping -c    10 (次数)  ip(域名) ...

  2. linux卸载erlang

    rpm -qa | grep erlang | xargs rpm -e --nodeps

  3. Go 指针

    变量是存储值得地方. 借助声明变量时使用的名字来区分. 指针的值是一个变量的地址.一个指针指示值所保存的位置.不是所有的值都有地址,但是所有的变量都有.使用指针,可以在无需知道变量名字的情况下,间接读 ...

  4. wpf改变网格字体颜色

    1.创建个转换器 public class ColorConvertor : IValueConverter { public object Convert(object value, Type ta ...

  5. intellij idea在project下同时打开多个工程(maven工程)

    前提:我的工程都是maven工程   我有两个工程,一个是接口contract,一个是接口的具体实现server.想要同时在一个工作空间下展示,方便调试开发,加载后效果如下   idea有worksp ...

  6. python之字符串拼接:%和format

    使用百分号拼接字符串: 例如: msg='i am %s my hobby is...' %'abc' print(msg) 如果需要用2个%s呢?就使用括号例如: msg='I am %s my h ...

  7. curl get方式

    提交数据到https时,需要pem证书来加密.我们使用浏览器访问https的时候,浏览器会自动加载网站的安全证书进行加密.但是你用curl请求https时,没有通过浏览器,就只有自己手动增加一个安全证 ...

  8. 转载:IIS 之 连接数、并发连接数、最大并发工作线程数、队列长度、最大工作进程数

    一.IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫“IIS限制连接数”. 客户请求的连接内容包括: [ ...

  9. python 获取随机字母

    Python2 #-*- coding:utf- -*- import string #导入string这个模块 print string.digits #输出包含数字0~9的字符串 print st ...

  10. 跳转Activity时清除当前Activity

    void GotoMainActivity(){ Intent intent = new Intent(ProductionInformationActivity.this, MainActivity ...