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时间整形转标准格式的示例分享
Feb 14 Python
Python中的二叉树查找算法模块使用指南
Jul 04 Python
详解Python中类的定义与使用
Apr 11 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python中@contextmanager实例用法
Feb 07 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 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 危险函数解释 分析
2009/04/22 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
解析isset与is_null的区别
2013/08/09 PHP
prototype 的说明 js类
2006/09/07 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
朴素贝叶斯算法的python实现方法
2014/11/18 Python
python学生管理系统代码实现
2020/04/05 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
影视艺术学院毕业生自荐信
2013/11/13 职场文书
服装厂厂长职责
2013/12/16 职场文书
机关保密承诺书
2014/06/03 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
学校党员干部承诺书
2015/05/04 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书