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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
Python程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
python中list常用操作实例详解
Jun 03 Python
python使用psutil模块获取系统状态
Aug 27 Python
解决python大批量读写.doc文件的问题
May 08 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
Python 元组操作总结
Sep 18 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
Python简单实现词云图代码及步骤解析
Jun 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中路径问题的解决方案
2006/10/09 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
详解vue路由
2020/08/05 Javascript
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
Django URL参数Template反向解析
2020/11/24 Python
AJAX的全称是什么
2012/11/06 面试题
农行实习自我鉴定
2013/09/22 职场文书
男方父母证婚词
2014/01/12 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
国培远程培训感言
2014/03/08 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
升学宴演讲稿
2014/09/01 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
vue+spring boot实现校验码功能
2021/05/27 Vue.js