tensorflow java 加速_Tensorflow使用GPU加速

测试faster-rcnn时,cpu计算速度较慢,调整代码改为gpu加速运算

将 with tf.Session() as sess: 替换为

1 gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9)2 with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options,log_device_placement=True),graph=detection_graph) as sess:3 with tf.device("/gpu:0"):

之后出现显存占满、而GPU利用率为0的情况,经查阅官方文档得知“在GPU上,tf.Variable操作只支持实数型(float16 float32 double)的参数。不支持整数型参数”

0168b8ff5a83b6df044e70ed88a5682c.png

97136d58e6c6947b3758a1166380434c.png

CPU计算几乎占满,可见tensorflow的运行空间在显存上,而计算实际是在cpu上执行的

用如下代码可检测tensorflow的能使用设备情况:

1 from tensorflow.python.client importdevice_lib2 print(device_lib.list_local_devices())

Tensorflow程序可以通过tf.device函数来指定运行每一个操作的设备,这个设备可以是本地CPU或GPU,也可以是某一台远程服务器。

tf.device函数可以通过设备的名称来指定执行运算的设备。

如CPU在tensorflow中的名称为/cpu:0。在默认情况下,即使机器有很多个CPU,tensorflow也不会区分它们,所有的CPU都使用/cpu:0作为名称。

而一台机器上不同GPU的名称是不同的,第n个GPU在tensorflow中的名称为/gpu:n。

tensorflow提供了一个会计的方式来查看运行每一个运算的设备。在生成会话时,可以通过设置log_device_placement参数来打印运行每一个运算的设备。

1 importtensorflow as tf2 a=tf.constant([1.0,2.0,3.0],shape=[3],name='a')3 b=tf.constant([1.0,2.0,3.0],shape=[3],name='b')4 c=a+b5 #通过log_device_placement参数来输出运行每一个运算的设备

6 sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))7 print (sess.run(c))

在以上代码中,tensorflow程序生成会话时加入了参数log_device_placement=True,所以程序会将运行每一个操作的设备输出到屏幕。

在配置好GPU的环境中,如果操作没有明确指定运行设备,那么tensorflow会优先选择GPU。但是,尽管有4个GPU,在默认情况下,tensorflow只会将运算优先放到/gpu:0上。如果需要将某些运算放到不同的GPU或CPU上,就需要通过tf.device来手工指定。

1 importtensorflow as tf2

3 a=tf.Variable(0,name='a')4 with tf.device('/gpu:0'):5 b=tf.Variable(0,name='b')6 #通过allow_soft_placement参数自动将无法放在GPU上的操作放回CPU上

7 sess=tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True))8 sess.run(tf.initialize_all_variables()

在以上代码中可以看到生成常量a和b的操作被加载到CPU上,而加法操作被放到第二个GPU上。在tensorflow中,不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,程序就会报错。

在GPU上,tf.Variable操作只支持实数型(float16 float32 double)的参数。不支持整数型参数。tensorflow在生成会话时可以指定allow_soft_placement参数。当这个参数设置为True时,如果运算无法由GPU执行,那么tensorflow会自动将它放到CPU上执行。

改进方式未完待续......

ref:https://blog.csdn.net/VioletHan7/article/details/82769531

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中策略设计模式_Java中的设计模式(五):策略模式

策略设计模式是行为设计模式之一。当我们为特定任务使用多个算法时,使用策略模式,客户端决定在运行时使用的实际实现。策略模式的最佳示例之一是Collections.sort()采用Comparator参数的方法。基于Comparator接口的不同实现,对象将以不同的方…

光学基础知识:白光、颜色混合、RGB、色彩空间

1665年,牛顿(Isaac Newton)进行了太阳光实验,让太阳光通过窗板的小圆孔照射在玻璃三角棱镜上,光束在棱镜中折射后,扩散为一个连续的彩虹颜色带,牛顿称之为光谱,表示连续的可见光谱。而可见光谱只是所有电磁…

SQL Server各个版本功能比较

微软的SQlserver主要经历了从sql server 2000 到最新的sql server 2017,现把各个版本的更新特性介绍如下:SQL SERVER 2000日志传送索引视图SQL SERVER 2005数据库镜像(只有 SQL Server 2005 Enterprise Edition SP1 和更高版本支持异步数据库…

java hibernate的使用_《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》

章节目标使用JPA EntityManagerFactory使用注解提供映射信息使用 JPA 接口本教程可在 entitymanger/ 路径下下载4.1. persistence.xml之前的章节使用了hibernate原生的配置文件hibernate.cfg.xml。然而,JPA中定义了不同的的自助配置文件persistence.xml。这个启动过…

父类与子类之间的关系

1) 运行课件中的例题ParentChildTest.java,回答下列问题: a) 左边的程序运行结果是什么? b) 你如何解释会得到这样的输出? 第一个创建一个Parent对象,调用的是父类构造方法 第二个创建一个Child对象,调用的…

13条只有程序员才能懂的内涵段子

一、bug跟蚊子的相似之处:1、不知道藏在哪里。2、不知道有多少。3、总是在你即将睡觉休息的时候出现。二、A:最近在看《一拳超人》,觉得咱们程序猿跟埼玉老师有点像啊!B:哪里像了?A:越秃越强&am…

php 等值线,【地理】攻克等值线的六大法门

3.等值线数值大小的判断方法(1)通常情况下,据图中已标注的等值线进行分析标注,标注时注意:①等值线数值的递变规律;②相邻两条等值线差值的大小。(2)在闭合的等值线上,除据以上方法判断外,还可用“大于…

4步win7下简单FTP服务器搭建(试验成功)

本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器,第一次装好WIN7后我愣是没整出来,后来查了一下网上资料经过试验后搭建成功,其实原理和步骤与windows前期的版本差不多,主要是对新的操作系统还不是很熟悉。相信用…

video.min.js php,在WordPress中使用videojs来播放七牛私有空间视频

首先,在主题函数文件functions.php中添加一个获取七牛下载凭证的函数。这部分参考function qiniu_download_url($url){$url trim($url, /);$deadline strtotime(1 hour);$url sprintf(%s?e%s, $url, $deadline);$sign hash_hmac(sha1, $url, SECRET_KEY, true)…

关于HTTP和HTTPS的区别

一HTTP和HTTPS的基本概念1、HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效&#xf…

Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)

首先来个最简单的一键切换主题功能&#xff0c;就做个白天和晚上的主题好了。 先看我们的styles文件&#xff1a; 1 <resources>2 3 <!-- Base application theme. -->4 <style name"AppTheme" parent"Theme.AppCompat.Light.DarkAction…

为何技术领域中女程序员较少?

对于大多数人来说&#xff0c;他们意识中的科技人就是扎克伯格&#xff0c;乔布斯或者是比尔盖茨——经常出现在新闻里的典型的男科技企业家。其实在科技领域还有一些女性&#xff0c;比如苏珊沃西基&#xff08;YouTube的CEO&#xff09;和吉尼罗曼提&#xff08;IBM的CEO&…

php 递归分销角色,PHP递归无限分类

我们面试程序开发的时候&#xff0c;经常会被问到递归的问题。今天我们在本文中以“素材火的特效分类表”作为演示&#xff0c;使用PHP递归结合Mysql实现无限级分类。难易&#xff1a;初级下载资源下载积分&#xff1a;50积分递归简单的说就是一段程序代码的重复调用&#xff0…

Android音频系统之AudioPolicyService

地址&#xff1a;http://blog.csdn.net/edmond999/article/details/18599327 1.1 AudioPolicy Service 在AudioFlinger小节&#xff0c;我们反复强调它只是策略的执行者&#xff0c;而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性&#xff0…

程序员常去的14个顶级开发社区

我们来看一下程序员经常去的 14 个顶级开发者社区&#xff0c;如果你还不知道它们&#xff0c;那么赶紧去看看&#xff0c;也许会有意想不到的收获。一、Stack Overflow9 月份&#xff0c;Stack Overflow 也将迎来其 6 岁的生日&#xff0c;毫无疑问&#xff0c;Stack Overflo…

C#特性-表达式树

表达式树ExpressionTree 表达式树基础 转载需注明出处&#xff1a;http://www.cnblogs.com/tianfan/刚接触LINQ的人往往觉得表达式树很不容易理解。通过这篇文章我希望大家看到它其实并不像想象中那么难。您只要有普通的LINQ知识便可以轻松理解本文。表达式树提供一个将可执行代…

程序员的一个好习惯,你有几个?

在很多外人看来,作为我们程序员这个行业只要会敲代码会改bug基本就可以了&#xff0c;但是现在行业人员几近饱和&#xff0c;没有过硬的几把刷子就想着可以甩掉身后的大部队也是不可能的。所以说我们要不断的学习不断的充实自己让企业在裁员的时候压根就考虑不到我们的头上来。…

2017已过半,这半年,你累吗?

大半年下来有人问你挣了多少钱却从来没有人问你最近的日子你累不累近来你受了多少委屈近来有多少心酸近来经历过多少艰难最近付出了多少不被人知的辛苦有时候真的很累、很累但是所有的累只能一笑而过这个累是自己经历的积累这个累是自己身上应该有的责任除了坚强&#xff0c;别…

自学编程的六点技巧

有一天&#xff0c;我的一个在学编程的朋友问我&#xff1a;“我想快速学习编程&#xff0c;你有什么好的推荐吗&#xff1f;我曾在上大学的时候自学过编程&#xff0c;这么多年过去了&#xff0c;我意识到我或许是在用最困难的方式去学习和了解编程。本来我完全可以用更快的速…

信息安全系统设计基础第十周学习总结

第八章 异常控制流 &#xff08;1&#xff09;控制流&#xff1a;控制转移序列。 控制转移&#xff1a;从一条指令到下一条指令。 异常控制流&#xff1a;现代操作系统通过使控制流发生突变来对系统状态做出反应&#xff0c;这些突变称为异常控制流。 &#xff08;2&#xff09…