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,一经查实,立即删除!

相关文章

Install OpenStack Kilo Dashboard wiht Nginx + uWSGI On RHEL7.1

一、安装Horizon、Nginx、uWSGI yum install -y uwsgi-plugin-python openstack-dashboard uwsgi nginx 二、配置uWSGI cat >/etc/uwsgi.ini <<EOF [uwsgi] plugins python master true processes 10 threads 2 chmod-socket 666socket 127.0.0.1:9000 pidfile …

C#枚举类型的笔记

一、枚举类型的概念枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于"多项选择"场合&#xff0c;就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。枚举类型&#xff08;也称为枚举&#xff09;为定义一组可以赋给变量的命名整数常量提…

java动态打印_JFreeChart学习(三)——动态打印java内存使用情况

JFreeChart动态打印java内存使用情况import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt…

WPF中StringToImage和BoolToImage简单用法

在WPF的绑定控件操作中&#xff0c;经常会通过bool值或者某些特定的string值做出相应动作。但UI层控件的很多属性对应的都不是Bool值或者对应的只是固定的String值。 这个时候有两方法解决该问题。 1.是在后台cs中做出比较判断&#xff0c;然后根据相应结果传达UI层做出相应动作…

【必备】jQuery性能优化的38个建议

一、注意定义jQuery变量的时候添加var关键字这个不仅仅是jQuery&#xff0c;所有javascript开发过程中&#xff0c;都需要注意&#xff0c;请一定不要定义成如下&#xff1a;$loading $(#loading); //这个是全局定义&#xff0c;不知道哪里位置倒霉引用了相同的变量名&#xf…

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

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

isset函数

isset (PHP 4, PHP 5) isset — 检测变量是否设置 检测变量是否设置&#xff0c;并且不是 NULL。 如果 var 存在并且值不是 NULL 则返回 TRUE&#xff0c;否则返回 FALSE。 $a "test"; $b "anothertest";var_dump(isset($a)); // TRUE var_dump(i…

SQLl中的left join、right join、inner join详解

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行举例如下&#xff1a;--------------------------------------------表A记…

afudos备份bios不动_bios刷坏后的两种解决方法

通常主板新的BIOS可以修正旧版中BIOS的一些BUG&#xff0c;纠正对某些硬件和软件的兼容问题&#xff0c;添加新硬件的支持等等&#xff0c;所以有时我们需要刷新BIOS。但刷新主板BIOS实际上是存在一定风险的&#xff0c;虽然现在各主板厂商都推出了在Windows下刷新BIOS的软件&a…

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

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

SQL Server各个版本功能比较

微软的SQlserver主要经历了从sql server 2000 到最新的sql server 2017&#xff0c;现把各个版本的更新特性介绍如下&#xff1a;SQL SERVER 2000日志传送索引视图SQL SERVER 2005数据库镜像&#xff08;只有 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。然而&#xff0c;JPA中定义了不同的的自助配置文件persistence.xml。这个启动过…

HTTP消息中Header头部信息整理

1、HTTP请求方式GET向Web服务器请求一个文件POST向Web服务器发送数据让Web服务器进行处理PUT向Web服务器发送数据并存储在Web服务器内部HEAD检查一个对象是否存在DELETE从Web服务器上删除一个文件CONNECT对通道提供支持TRACE跟踪到服务器的路径OPTIONS查询Web服务器的性能说明&…

gdb命令中attach使用

[测试程序] 我们先看看我们的测试程序: /* in eg1.c */ int wib(int no1, int no2) { int result, diff; diff no1 - no2; result no1 / diff; return result; } int main() { pid_t pid; pid fork(); if (pid &…

java%4d_java积累

数组的使用package javaDemo;import java.util.*;/**** author Administrator* version 1.0***/public class test {public static void main(String[] args){String[] greeting new String[3];greeting[0] "Welcome to Core Java";greeting[1] "by Cay Hors…

查询CPU占用高的SQL语句的解决方案

触发器造成死锁、作业多且频繁、中间表的大量使用、游标的大量使用、索引的设计不合理、事务操作频繁、SQL语句设计不合理&#xff0c;都会造成查询效率低下、影响服务器性能的发挥。我们可以使用sql server自带的性能分析追踪工具sql profiler分析数据库设计所产生问题的来源&…

父类与子类之间的关系

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

php获取到的json数据如何处理_php – 如何从API获取JSON数据

我使用过雅虎的符号查找它以JSON格式返回数据.喜欢以下YAHOO.Finance.SymbolSuggest.ssCallback({"ResultSet": {"Query": "ya","Result": [{"symbol": "YHOO","name": "Yahoo! Inc.","…

.NET开发中应该遵循的几点建议

1、始终控制类的大小那些超大的类在尝试做太多的事情&#xff0c;这违反了单一职责原则&#xff0c; 为什么一定要将两个职责分离到单独的类中呢&#xff1f;因为每一个职责都是变化的中心。在需求变更时&#xff0c;这个变更将会出现在负责该职责的类中。如果一个类承担了多个…

Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案问题linux的jetty下发布程序后再启动jetty服务时&#xff0c;发现启动不了&#xff0c;从日志中找到报java.lang.OutOfMemoryError: PermGen space。原因分析PermGen space&#xff0c;全…