![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
TensorFlow
文章平均质量分 92
gaussrieman123
喜欢新技术与老故事。
展开
-
TensorFlow c++ SessionFactory注册与No session factory registered错误
TensorFlow c++ SessionFactory注册与No session factory registered错误背景近期我们在服务器上使用TensorFlow来进行推理,作为云推理服务的基础。具体如何使用tensorflow c++库来进行推断可以参考之前的记录《从0开始使用tensorflow的c++库进行模型推断》。在经过一些demo的验证之后,我们开始在项目中正式使用TensorFlow的c++库,简单描述我们的用法:tensorflow作为最底层,上面有一层对推理框架的封装静态库原创 2020-05-27 16:34:01 · 1487 阅读 · 4 评论 -
从0开始使用tensorflow的c++库进行模型推断
背景之前我们一直用MNN来作为推断框架,且取得了不错的效果!近期要在服务器上跑一下模型,我们也顺理成章想到用MNN的GPU,主要是OpenCL和Vulkan,因为在Android手机上已经验证过这两个backend的可行性,所以认为在x86平台上也是顺水推舟的事情。然后就打脸了,而且是在项目快到期之前才发现这些问题:心慌意乱,然后只能赶紧用Tensorflow的c++库救急:主要内容...原创 2020-04-20 20:15:16 · 1606 阅读 · 1 评论 -
从DistBelief看深度学习早期的并行化
从DistBelief看深度学习早期的并行化背景DistBelief是TensorFlow的前身,与TF的名扬天下如雷贯耳相比,DistBelief简直是不值一提,但是仔细琢磨就能发现,大部分深度学习框架的问题,在DistBelief里面就已经有了回答。其中就有今天要讨论的并行部分。一言以蔽之,深度学习,或者说机器学习,在工程上最大的难题就是满足大规模数据的要求。与摩尔定律相比,数据的爆发显然更令人惊讶,所以如何处理大规模数据,并从中学习到一个好的模型,是一个非常严肃的问题。大规模数据首先是大规模的原创 2021-01-12 17:05:23 · 1750 阅读 · 0 评论 -
为什么TensorFlow要使用图结构?
当我们说起TensorFlow,不可避免会提到图结构,为什么TensorFlow要用图结构呢?有什么好处呢?为了搞清楚这些问题,我们先从深度学习的计算过程说起。深度学习计算过程作为图像计算的一种,深度学习计算与其他图计算并没有什么本质的区别,输入图像,根据定义好的规则对图像进行计算,并输出计算结果,然后按照规则对计算结果,然后得到最终场景需要的结果。其中,这个规则就是由深度学习模型来定义,决定我们如何对图像进行一层层计算,并得到结果。我们稍微细化一下,从结果倒推,为了得到计算结果,我们至少需要什么?原创 2020-12-16 16:00:19 · 640 阅读 · 1 评论 -
[续] TensorFlow + MKL 内存泄漏及解决办法
[续] TensorFlow + MKL 内存泄漏及解决办法背景之前就发现了tf+mkl的内存泄漏问题,当时给出的办法是不用mkl了,使用原版的TensorFlow C++动态库。这样内存确实不怎么泄漏了(实测还是会有一点点上涨),但是CPU上的性能也就没有了,毕竟已知在我们的机器上,mkl的4个线程单次推理能够比原版快一倍,从600ms降到300ms,相当可观的性能提升了。思来想去,还是要把这个坑填上。填坑之旅1.重燃希望本来已经不抱希望的,直到发现百度的paddle库中有一个issue说解决原创 2020-10-13 09:24:48 · 1240 阅读 · 6 评论 -
tfjs进行RGB-BGR转换的三种方法
变量定义var t_rgb; 原始RGB的tensorvar t_bgr; 目标BGR的tensor小结默认从frame数组构造的tensor的hwc格式的,所以我们先要将hwc格式转成chw格式,然后再去交换R和B通道的数据,这是从图像层面比较容易想到的过程,但是也比较复杂,方法1就描述了这个过程。然后我们可以注意到,实际上并不需要显示的CHW格式,我们要做的事情就是交换R和B的值,所以方法2直接在第三个维度去做split,然后重新组合成新的tensor即可。进一步,我们考虑一下宏观的信息,注原创 2020-08-05 15:30:17 · 844 阅读 · 0 评论 -
TensorFlow + MKL 内存泄漏及解决办法
TensorFlow + MKL 内存泄漏及解决办法背景最近在做深度学习在线推理相关的项目,底层使用TF来作为推断框架,我们知道,TF底层是用Eigen完成CPU的计算的,而Eigen的速度只能说一般般,与成熟的计算库在性能上的差距还是比较明显的,比如TF支持的intel MKL。之于如何使用TF+MKL,可以参考此文,其实就是在编译时加上--config=mkl选项,然后在生成可执行文件时链接libmkldnn.so, libmklml_intel.so, libimop5.so,就可以使用TF+原创 2020-06-08 20:32:24 · 1347 阅读 · 4 评论 -
TensorFlow 源码阅读[0]
背景最近有一点时间,决定撸一撸TF的源码,知其然也希望能知其所以然,想从四个方面来学习:接口层设计以及C到各平台接口转换Graph编译和executor执行过程解析Ops和OpKernel的解析重点Kernel的实现解析网上没找到趁手的资料,只能硬着头皮写一写,一方面当做记录,另一方面也是一种鞭策和激励,希望能多写一点。1.TensorFlow 源码阅读[1] OpKernel的...原创 2020-04-10 21:46:54 · 281 阅读 · 0 评论 -
TensorFlow 源码阅读[1] OpKernel的注册
OpKernel介绍在TF的架构中,OpKernel是Ops和硬件的中间层,用来抽象统一各个硬件平台上的Kernel类和接口。注册过程我们首先大致列出OpKernel注册的过程,后面再详细分析,我们按照调用顺序,从上层往下说:在各个xxx_op.cc文件中调用REGISTER_KERNEL_BUILDER()调用OpKernelRegistrar的构造函数并在该构造函数中调用OpK...原创 2020-04-10 21:43:33 · 1526 阅读 · 0 评论 -
TensorFlow2.0的动态图和静态图切换 part 2
TensorFlow2.0的动态图和静态图切换 part 2在part1中,我们学习了如何使用tf.function将python函数转换成tf的静态图,也学习了转换时创建一个状态(tf.Variable)可能出现的问题以及解决办法。在第二部分,我们将尝试传入一个tf.Tensor,而不是tf.Variable,来确定转换是否和我们想象的一样。tf.function使用AutoGraph为...翻译 2020-03-31 11:36:57 · 2629 阅读 · 0 评论 -
TensorFlow2.0的动态图和静态图切换 part 1
TensorFlow2.0的动态图和静态图切换tf.function介绍动态图是tf2.0最引人注目的特征,大部分其他改动都是为了适应动态图。它允许将一部分python语法转换为可移植、高性能、语言无关的TensorFlow1.x语法,通过这种方式完成tf1.x静态库和tf2.0动态图的切换。尽管听起来很美好,但是tf.function还是有一些不为人知的细节值得我们注意,本文就是通过错误驱...翻译 2020-03-30 11:47:58 · 6342 阅读 · 3 评论