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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
python回溯法实现数组全排列输出实例分析
Mar 17 Python
举例讲解Python程序与系统shell交互的方式
Apr 09 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
Python实现抢购IPhone手机
Feb 07 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
python实现微信自动回复机器人功能
Jul 11 Python
Python-opencv 双线性插值实例
Jan 17 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
php注册登录系统简化版
2020/12/28 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python 实现逻辑回归
2020/12/30 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
工程类专业自荐信范文
2014/03/09 职场文书
工程催款通知书
2015/04/17 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书