cuda

Tensorflow模型量化4 --pb转tflite(uint8量化)小结

六月ゝ 毕业季﹏ 提交于 2020-08-20 08:41:52
Tensorflow模型量化4 --pb转tflite小结(uint8量化) 实验环境:tensorflow-gpu1.15+cuda10.0 模型的fp16量化和int8量化我之前有写,参考: 龟龟:Tensorflow模型量化实践2--量化自己训练的模型​zhuanlan.zhihu.com 这次发现uint8量化时有参数设置,所以准备是从头再梳理一遍 2.参与量化的模型: 训练tensorflow-object-detection API 得到的ssdlite_mobilenet _ v2模型,导出为frozen_inference_graph.pb 3.获取输入输出节点 进行frozen_inference_graph.pb模型解析,得到输入输出节点信息 代码入下: """ code by zzg """ import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" config = tf.ConfigProto() config.gpu_options.allow_growth = True with tf.Session() as sess: with open('frozen_inference_graph_resnet.pb','rb') as f: graph_def = tf

写给程序员的机器学习入门 (七)

﹥>﹥吖頭↗ 提交于 2020-08-20 07:48:55
这一篇将会介绍什么是双向递归模型和如何使用双向递归模型实现根据上下文补全句子中的单词。 双向递归模型 到这里为止我们看到的例子都是按原有顺序把输入传给递归模型的,例如传递第一天股价会返回根据第一天股价预测的涨跌,再传递第二天股价会返回根据第一天股价和第二天股价预测的涨跌,以此类推,这样的模型也称单向递归模型。如果我们要根据句子的一部分预测下一个单词,可以像下图这样做,这时 天气 会根据 今天 计算, 很好 会根据 今天 和 天气 计算: 那么如果想要预测在句子中间的单词呢?例如给出 今天 和 很好 预测 天气 ,因为只能根据前面的单词预测,单向递归模型的效果会打折,这时候双向递归模型就派上用场了。双向递归模型 (BRNN, Bidirectional Recurrent Neural Network) 会先按原有顺序把输入传给递归模型,然后再按反向顺序把输入传给递归模型,然后合并正向输出和反向输出。如下图所示, hf 代表正向输出, hb 代表反向输出,把它们合并到一块就可以实现根据上下文预测中间的内容, 今天 会根据反向的 天气 和 很好 计算, 天气 会根据正向的 今天 和反向的 很好 计算, 很好 会根据正向的 今天 和 天气 计算。 在 pytorch 中使用双向递归模型非常简单,只要在创建的时候传入参数 bidirectional = True 即可: self.rnn

在Jetson nano上编译paddle(带TensorRT)并跑通Paddle-Inference-Demo

限于喜欢 提交于 2020-08-20 02:10:46
懒人区:想直接安装的可以点这个链接。 ---------------------------------分割线--------------- 缘由: 在官方的Paddle-Inference-Demo中,建议Paddle版本>=1.7。 而个人能找到的资源最高的版本是Nvidia论坛的1.6.3版本的paddlepaddle-gpu。以及文档中提供的0.0.0版本( 链接 )。 https://forums.developer.nvidia.com/t/paddlepadd-gpu-1-6-3-for-jetson-nano-now-available/111655 在跑Demo的过程中,发现 文档中给出的版本 没有Paddle-TensorRT的功能 ,虽然可以使用GPU加速。但是总感觉有TensorRT但却用不上很膈应。 另外,Nvidia论坛放出的版本虽然支持TensorRT,但是版本低于Paddle-Inference-Demo要求的1.7以上。在查阅 1.6 和 1.7 的文档后,发现API有很大的不同。 我根据1.6.3支持的API对yolov3的demo修改后,**发现推理的结果有很大出入。**参见我在Github提的 issue 。当然,在运行过程中也会报model和lib版本不一致的错误。* 推测是不同版本支持的算子可能不一样(或者实现)? * 而且

finished with exit code -1073740791 (0xC0000409)解决方案

吃可爱长大的小学妹 提交于 2020-08-19 19:33:44
1.在用keras框架跑NER的train时,而且只是在用了 keras_contrib.layers 的 CRF时出现问题: 遇到无错跳出finished with exit code -1073740791 (0xC0000409), (有其他博主说的减小batchsize的 我试过把batchsize减小为2,但是没有用) 2.查出是 显卡内存 不足的问题,解决如下(对个人有效): import os os.environ[ " CUDA_VISIBLE_DEVICES " ] = " -1 " (本人pc上并未安装cuda等GPU所需要的包,猜想这句话应该是默认用cpu) ---------------------------------------------------------------------------------------------------------------- 3.<原理参考>: keras在使用 GPU 的时候有个特点,就是默认全部占满 显存 。这样如果有多个模型都需要使用GPU跑的话,那么限制是很大的,而且对于GPU也是一种浪费。因此在使用keras时需要有意识的设置运行时使用那块显卡,需要使用多少容量。 这方面的设置一般有三种情况: 1.指定显卡 2.限制GPU用量 3.即指定显卡又限制GPU用量 一、指定显卡 import os

开源项目OEIP 游戏引擎与音视频多媒体(UE4/Unity3D)

拜拜、爱过 提交于 2020-08-19 13:08:41
  现开源一个项目 OEIP 项目例子: 项目实现的功能Demo展示      这个项目演示了在UE4中,接入摄像机通过OEIP直接输出到UE4纹理上,并直接把UE4里的RenderTarget当做输入源通过OEIP里GPU管线处理后推流出去,而另一边Unity3D也是把RenderTarget当做输入,用OEIP处理后推流,经过OEIP封装signalR技术的直播SDK通知,二边各自拉另一边的流并通过OEIP相应管线直接输出到Texture2D并显示出来。演示的机器配置是i5-7500,8G内存,有二个推1080P,拉1080P流的处理,再加上生成截屏视频和yolov3-tiny神经网络识别,所以CPU有点吃不消。   这是我个人验证一些技术所搭建的DEMO级方案,接入了基本的普通摄像头处理,也没有提供稳定的直播供应商的实现,一些基本的图像处理,推拉流也只支持422P/420P格式。但是我自己还是花了大量业余时间在这方案上,并以及大热情来完善,不过业余时间毕竟有限,测试不完善,加上本人C++不是太熟悉,所以肯定有很多隐藏问题,欢迎指出问题,更欢迎提交修改。   本项目重点主要在图像处理并与游戏引擎的对接上,主要实现与游戏引擎对接更少的性能消耗,方便引入各种图像处理,包括相关神经网络图像处理,余下处理都是结合网上代码加上测试完善逻辑

树梅派+Ubunut19.10+YOLOV4实现目标检测

[亡魂溺海] 提交于 2020-08-19 03:03:58
树梅派+Ubunut19.10+YOLOV4实现目标检测 学习了yolov4,记录一下入门操作,可以实现通过树梅派摄像头采集视频,通过PC端中运行yolov4来进行实时目标检测。 实现效果 测试环境准备 树梅派3B( Raspbain-desktop) ubuntu19.10 CUDA 10.1 CUDNN 7.6.5 OPENCV 3.4.4 Opencv_contrib3.4.4 python 2.7 python3.7 gcc -8 g++ -8 实现过程 树梅派中安装mjpg-streamer 参考博客: https://shumeipai.nxez.com/2017/05/14/raspberry-pi-mjpg-streamer-installation.html https://blog.csdn.net/lby0910/article/details/51791862 安装好之后设置mjpg-sreamer自启动 进入树么派/etc/rc.local文件 在exit 0前面添加mjpg-streamer路径如下 cd /home/pi/mjpg-streamer/mjpt-streamer-experimental ./mjpg_streamer -i “./input_raspicam.so” ./output_http.so -w ./www" & 末尾

从事python机器学习,这些三方库很重要!

随声附和 提交于 2020-08-18 14:35:58
  很多人之所以喜欢python,不仅仅因为简单易学、容易入门,更多是因为python有强大的第三方库,那么在机器学习中,python有哪些库可以使用呢?   1、Scikit-learn:最流行的ML库之一,支持很多监督学习和非监督学习算法。基于两个python库,Numpy 和 Scipy,为常见的机器学习和数据挖掘提供一组算法,聚类、回归和分类。   2、Tensorflow:当你使用python编写代码,你可以编译和运行在你的CPU或者GPU上,你不需要写C++或者CUDA的代码,可以运行在GPU集群上。   3、Theano:另一个用于数值计算的优秀类库,类似于Numpy。Theano允许你高效定义,优化和评估涉及多维数组的数学表达式。与众不同的是它利用计算机的GPU,能够比单独在CPU上运行时快100倍进行数据密集型计算。   4、Pandas:非常流行的一个库,提供简单易用且直观的高效数据结构,有许多内建的方法来分组、组合数据和过滤以及执行时间序列分析。可以轻松地从sql数据库、CSV、Excel、JSON文件等不同来源获取数据,并对数据进行操作。   5、Seaborn:一个流行的可视化库,建立在Matplotlib的基础之上,是一个高级库,意味着更容易生成某些类型的图,包含热图、时间序列等。 来源: oschina 链接: https://my.oschina

OneFlow机器学习框架介绍

白昼怎懂夜的黑 提交于 2020-08-18 11:20:55
OneFlow 是什么? OneFlow 是开源的、采用全新架构设计,世界领先的工业级通用深度学习框架。特点包括: 分布式训练全新体验,多机多卡如单机单卡一样简单 完美契合一站式平台(k8s + docker) 原生支持超大模型 近零运行时开销、线性加速比 灵活支持多种深度学习编译器 自动混合精度 中立开放,合作面广 持续完善的算子集、模型库 更多参考: OneFlow特点与机器学习的未来 OneFlow官方在线文档的 github仓库 OneFlow在线文档: http://docs.oneflow.org/ BenchMark项目: https://github.com/Oneflow-Inc/OneFlow-Benchmark API项目: https://github.com/Oneflow-Inc/oneflow-api 在线文档不仅有 OneFlow系统设计 的介绍,还包括以下模块: 【 首页】 【 快速上手】 【基础专题】 【拓展专题】 【高级应用实例】 【API】 【OneFlow开源计划】 本仓库包含中文文档和英文文档,分别存放于cn、en文件夹下,文档目录结构树: . ├── quick_start 快速上手 ├── basics_topics 基础专题 ├── extended_topics 拓展专题 ├── code 文档示例代码 │ ├── basics

【技术博客】GPU 编程之从零开始实现 MNIST-CNN

吃可爱长大的小学妹 提交于 2020-08-18 03:36:22
【技术博客】GPU 编程之从零开始实现 MNIST-CNN 很多人最开始接触“ GPU ”想必都是通过游戏,一块高性能的 GPU 能带来非凡的游戏体验。而真正使GPU被越来越多人熟知是因为机器学习、深度学习的大热(也有人用于比特币挖矿),因为庞大的数据与计算量需要更快的处理速度,GPU 编程也因此越来越普遍。 从事深度学习的工作者常常自嘲自己为“炼丹师”,因为日常工作是:搭网络,调参,调参,调参......作为刚入门深度学习的小白更是如此,虽然不停的复现着一个又一个的网络,但总有些迷茫。我想这个迷茫来源于深度学习的“黑盒”性质,而我们所做的工作绝大部分时间又仅是调参,对网络内部的计算实际是模糊的。因此,本文试着结合 GPU 编程从零开始写一个简单的 CNN 网络,从内部深入理解网络的运行,希望能够一定程度上消除这种迷茫,也通过这一个简单的应用来了解 GPU 编程。 因此本文主要分为两个部分: GPU 编程的介绍与入门。 使用 GPU 编程从零开始搭建 MNIST-CNN。 1 GPU 编程的介绍与入门 1.1 介绍 图 1 为 CPU 与 GPU 的物理结构对比(图片源自网络)。图中的有色方块代表了处理核心,虽然 CPU 的核心比较少(如图中只有8块),但每一个算能力都非常强;而 GPU 的核心非常多,但每一个的能力有限。核心数量决定着处理计算过程的线程数量,因此对于计算问题来说

5分钟!用Java实现目标检测 | PyTorch

孤者浪人 提交于 2020-08-17 20:06:12
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 编者按: 作为一个Java开发者,你是否曾为在PyTorch上部署模型而苦恼?这篇来自AWS软件工程师的投稿,结合实例,详细介绍了DJL这个为Java开发者设计的深度学习库:5分钟,你就能在PyTorch上,用Java实现目标检测。 5分钟,用Java实现目标检测 PyTorch在深度学习领域中的应用日趋广泛,得益于它独到的设计。无论是数据的并行处理还是动态计算图,一切都为Python做出了很多简化。很多论文都选择使用PyTorch去实现也证明了它在训练方面的效率以及易用性。 在PyTorch领域,尽管部署一个模型有很多选择,可为Java开发人员准备的选项却屈指可数。 在过去,用户可以用PyTorch C++ 写JNI (Java Native Interface) 来实现这个过程。最近,PyTorch 1.4 也发布了试验性的Java 前端。 可是这两种解决方案都没有办法能让Java开发者很好的使用:用户需要从易于使用和易于维护中二选一。 针对于这个问题,亚马逊云服务 (AWS)开源了 Deep Java Library (DJL),一个为Java开发者设计的深度学习库。它兼顾了易用性和可维护性,一切运行效率以及内存管理问题都得到了很好的处理。 DJL使用起来异常简单