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之Python文档
Oct 10 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
Python 一句话生成字母表的方法
Jan 02 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
Python安装whl文件过程图解
Feb 18 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 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的curl实现get和post的代码
2008/08/23 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
python常用排序算法的实现代码
2019/11/08 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
辅导员评语
2014/05/04 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
电教室标语
2014/06/20 职场文书
创先争优标语
2014/06/27 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
大学感恩节活动总结
2015/05/05 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang