tensorflow指定CPU与GPU运算的方法实现

 更新时间:2020年04月21日 15:44:28   作者:Baby-Lily  
这篇文章主要介绍了tensorflow指定CPU与GPU运算的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python Pillow图像降噪处理颜色处理

    python Pillow图像降噪处理颜色处理

    这篇文章主要为大家介绍了python Pillow图像降噪处理颜色处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • python读取oracle函数返回值

    python读取oracle函数返回值

    这篇文章主要介绍了python读取oracle函数返回值的相关资料,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 在Python操作时间和日期之asctime()方法的使用

    在Python操作时间和日期之asctime()方法的使用

    这篇文章主要介绍了在Python操作时间和日期之asctime()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python中跳出循环的两种方法

    Python中跳出循环的两种方法

    在 Python 中,跳出循环通常指的是使用 break 语句来结束一个循环结构,比如 for 循环或 while 循环,当程序执行到 break 语句时,循环会立即终止,程序会继续执行循环后面的代码,本文给大家介绍了Python中跳出循环的两种方法,需要的朋友可以参考下
    2024-09-09
  • pandas实现数据读取&清洗&分析的项目实践

    pandas实现数据读取&清洗&分析的项目实践

    近期因工作需要,需对几十万条商品和订单数据进行初步的数据分析,本文主要pandas实现数据读取&清洗&分析的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • python opencv 批量改变图片的尺寸大小的方法

    python opencv 批量改变图片的尺寸大小的方法

    这篇文章主要介绍了python opencv 批量改变图片的尺寸大小的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • django应用JWT(JSON Web Token)实战教程

    django应用JWT(JSON Web Token)实战教程

    在前后端分离的项目中,JWT(JSON Web Token)作为一种广泛使用的身份验证和授权机制,提供了一种安全、高效的方式来保护RESTful API,本文详细介绍了JWT的概念、优势、在Django中的应用步骤和使用方法,是构建安全、高效Web应用的有效指南
    2024-10-10
  • 使用keras实现densenet和Xception的模型融合

    使用keras实现densenet和Xception的模型融合

    这篇文章主要介绍了使用keras实现densenet和Xception的模型融合,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python中的Request请求重试机制

    Python中的Request请求重试机制

    这篇文章主要介绍了Python中的Request请求重试机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python设计模式之工厂模式简单示例

    Python设计模式之工厂模式简单示例

    这篇文章主要介绍了Python设计模式之工厂模式,简单说明了工厂模式的原理,并结合实例形式给出了Python实现工厂模式的具体操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论