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返回昨天日期的方法
May 13 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
Python配置虚拟环境图文步骤
May 20 Python
python datetime中strptime用法详解
Aug 29 Python
python创建学生管理系统
Nov 22 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
Anaconda的安装与虚拟环境建立
Nov 18 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
php中动态调用函数的方法
2015/03/16 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
电视购物广告词
2014/03/19 职场文书
离婚协议书范文2014
2014/10/16 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
公司规章制度范本
2015/08/03 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js
MySQL多表查询机制
2022/03/17 MySQL