tensorflow指定CPU与GPU运算的方法实现


Posted in Python onApril 21, 2020

1.指定GPU运算

如果安装的是GPU版本,在运行的过程中TensorFlow能够自动检测。如果检测到GPU,TensorFlow会尽可能的利用找到的第一个GPU来执行操作。

如果机器上有超过一个可用的GPU,除了第一个之外的其他的GPU默认是不参与计算的。为了让TensorFlow使用这些GPU,必须将OP明确指派给他们执行。with......device语句能够用来指派特定的CPU或者GPU执行操作:

import tensorflow as tf
import numpy as np

with tf.Session() as sess:
  with tf.device('/cpu:0'):
    a = tf.placeholder(tf.int32)
    b = tf.placeholder(tf.int32)
    add = tf.add(a, b)
    sum = sess.run(add, feed_dict={a: 3, b: 4})
    print(sum)

设备的字符串标识,当前支持的设备包括以下的几种:

cpu:0 机器的第一个cpu。

gpu:0 机器的第一个gpu,如果有的话

gpu:1 机器的第二个gpu,依次类推

类似的还有tf.ConfigProto来构建一个config,在config中指定相关的GPU,并且在session中传入参数config=“自己创建的config”来指定gpu操作

其中,tf.ConfigProto函数的参数如下:

log_device_placement=True: 是否打印设备分配日志

allow_soft_placement=True: 如果指定的设备不存在,允许TF自动分配设备

import tensorflow as tf
import numpy as np

config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)

with tf.Session(config=config) as sess:
  a = tf.placeholder(tf.int32)
  b = tf.placeholder(tf.int32)
  add = tf.add(a, b)
  sum = sess.run(add, feed_dict={a: 3, b: 4})
  print(sum)

2.设置GPU使用资源

上文的tf.ConfigProto函数生成的config之后,还可以设置其属性来分配GPU的运算资源,如下代码就是按需分配

import tensorflow as tf
import numpy as np

config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)
config.gpu_options.allow_growth = True

with tf.Session(config=config) as sess:
  a = tf.placeholder(tf.int32)
  b = tf.placeholder(tf.int32)
  add = tf.add(a, b)
  sum = sess.run(add, feed_dict={a: 3, b: 4})
  print(sum)

使用allow_growth option,刚开始会分配少量的GPU容量,然后按需要慢慢的增加,有与不会释放内存,随意会导致内存碎片。

同样,上述的代码也可以在config创建时指定,

import tensorflow as tf
import numpy as np

gpu_options = tf.GPUOptions(allow_growth=True)
config = tf.ConfigProto(gpu_options=gpu_options)


with tf.Session(config=config) as sess:
  a = tf.placeholder(tf.int32)
  b = tf.placeholder(tf.int32)
  add = tf.add(a, b)
  sum = sess.run(add, feed_dict={a: 3, b: 4})
  print(sum)

我们还可以给gpu分配固定大小的计算资源。

gpu_options = tf.GPUOptions(allow_growth=True, per_process_gpu_memory_fraction=0.5)

上述代码的含义是分配给tensorflow的GPU显存大小为:GPU的实际显存*0.5

tensorflow指定CPU与GPU运算的方法实现

tensorflow指定CPU与GPU运算的方法实现

到此这篇关于tensorflow指定CPU与GPU运算的方法实现的文章就介绍到这了,更多相关tensorflow指定CPU与GPU运算内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python MD5文件生成码
Jan 12 Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
python简单实例训练(21~30)
Nov 15 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
python 平衡二叉树实现代码示例
Jul 07 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
Python如何实现爬取B站视频
May 20 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
浅析Python 序列化与反序列化
Aug 05 Python
Python 读取位于包中的数据文件
Aug 07 Python
Python爬虫基础初探selenium
May 31 Python
Python多线程实现支付模拟请求过程解析
Apr 21 #Python
安装多个版本的TensorFlow的方法步骤
Apr 21 #Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 #Python
TensorFLow 数学运算的示例代码
Apr 21 #Python
jupyter修改文件名方式(TensorFlow)
Apr 21 #Python
Python基于requests实现模拟上传文件
Apr 21 #Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 #Python
You might like
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
Python程序退出方式小结
2017/12/09 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
使用Python实现批量ping操作方法
2020/05/06 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
《九寨沟》教学反思
2014/04/08 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
个人合伙协议书范本
2014/10/14 职场文书
2014年应急工作总结
2014/12/11 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
创业计划书之美容店
2019/09/16 职场文书