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中defaultdict的用法详解
Jun 07 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
pygame实现简易飞机大战
Sep 11 Python
对python中类的继承与方法重写介绍
Jan 20 Python
详解Python:面向对象编程
Apr 10 Python
Opencv实现抠图背景图替换功能
May 21 Python
Django框架 信号调度原理解析
Sep 04 Python
python实现贪吃蛇双人大战
Apr 18 Python
Python 实现微信自动回复的方法
Sep 11 Python
python如何实时获取tcpdump输出
Sep 16 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 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数组去除空值函数分享
2015/02/02 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
小谈angular ng deploy的实现
2020/04/07 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
理解Python中函数的参数
2015/04/27 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
面试后的感谢信范文
2014/02/01 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Django基础CBV装饰器和中间件
2022/03/22 Python
Ruby处理CSV数据方法详解
2022/04/18 Ruby
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL