
工具
文章平均质量分 93
SunnyZhou-1024
这个作者很懒,什么都没留下…
展开
-
看PyTorch源代码的心路历程
1. 起因曾经碰到过别人的模型prelu在内部的推理引擎算出的结果与其在原始框架PyTorch中不一致的情况,虽然理论上大家实现的都是一个算法,但是从参数上看,因为经过了模型转换,中间做了一些调整。为了确定究竟是初始参数传递就出了问题还是在后续传递过程中继续做了更改、亦或者是最终算法实现方面有着细微差别导致最终输出不同,就想着去看一看PyTorch一路下来是怎么做的。但是代码跟着跟着就跟丢了,才会发现,PyTorch真的是一个很复杂的项目,但就像舌尖里面说的,环境越是恶劣,回报越是丰厚。为了以后再想跟踪原创 2021-01-22 17:45:13 · 1676 阅读 · 0 评论 -
CMake笔记:add_custom_command不执行
0x00. 前言在网上看别人做一些手工教程视频,经常能看到这样的评论:脑子:我感觉我会了。手:你行你来。之前一直通过编译脚本去寻找代码入口,感觉我已经懂得CMake的语法了,直到今天寄己要写一个脚本去编译一个工程才发现,事情并不简单:脚本并没有按照我期望的去执行。此工程需要用到Protocol Buffer,因此当代码构建的时候需要使用使用Protocol Buffer编译器去编译.proto文件获得对应的生成文件。理论上,想要达到这个目的,我们只需要在CMakeLists.txt中使用add原创 2021-01-22 17:32:40 · 3988 阅读 · 1 评论 -
TensorFlow Lite源码解析之二(内存管理)
相关阅读TensorFlow Lite源码解析之一1. 前言爱迪生说过,人工智能就是是百分之九十九的数据加上百分之一的算法。毕竟目前人工智能还没有达到T800这种以毁灭人类为己任的终结者级别,归根到底还是一个程序。这么一想,是不是觉得市面上说的AI要统治人类了根本就是危言耸听,对于弱人工智能,我治不住你,难道我的360强力卸载还治不住你?言归正传。很显然,想要了解一个程序,理解它是怎么管理用于存储数据的内存是一个绕不开的话题。想要了解TensorFlow Lite是如何工作的,我们首先要弄清楚它.原创 2020-12-03 14:14:27 · 1667 阅读 · 3 评论 -
TensorFlow Lite源码解析之一
每一个成功的人工智能背后,都有一个摸摸推理的引擎。想知道TFLite是怎么工作的么,戳我了解更多!原创 2020-11-30 11:20:32 · 1801 阅读 · 0 评论 -
Kibana插件开发之环境搭建
教你怎么一步步搭建Kibana插件开发环境原创 2020-05-09 13:11:38 · 1132 阅读 · 2 评论 -
Docker,系统影分身之术
容器化其实就是一种虚拟化技术,与传统虚拟机相比,它有着轻量、独立、可伸缩、可移植以及灵活等特点。容器直接运行于内核之上,多个容器共用系统的内核,直接通过内核获取系统资源,用多少取多少;而虚拟机则通过一个管理程序来获取宿主系统的资源,运行在其上的程序有着自己的内核,就算你跑的是个`Hello World`,它也占用这很大一块资源。拿吃饭打个比方,容器是按点的菜收钱:你点多少菜付多少钱;虚拟机是按人头收钱,只要你人在那,就算你只喝了一口水也照样收你这么多钱。原创 2020-04-24 20:38:26 · 509 阅读 · 0 评论 -
使用Github+Markdown搭键自己的笔记本
Github优点显而易见,因为本身已经熟悉了Git的常规操作,上传下载轻而易举。并且由于它核心是Git,可以轻松实现备份,最多写个脚本就好了,毕竟是自己的专业。Github一份、Gitee一份、本地还可以有一份,万一哪天Github真把中国区锁了(毕竟这个魔幻的年份),Gitee还有。如果三份一起丢失,那就是命吧。另外由于它基于Git,文档一路的变迁都有迹可寻,只要修改提交了,就不用担心后续手贱删除了什么东西。是要`.git`这个地基还在,我们就能重建家园。原创 2020-04-19 16:39:00 · 16283 阅读 · 9 评论 -
交叉编译和ABI简介
本文介绍交叉编译和与之相关的Application Binary Interface的相关知识。原创 2020-03-05 16:04:27 · 1952 阅读 · 0 评论 -
cmake 脚本编程简介
本文通过介绍cmake的语法入手,一步一步的讲解cmake中关键命令的作用,不仅可以帮你看懂和修改开源代码中的cmake文件,还能让你学会编写构建自己工程的cmake脚本文件。原创 2020-03-03 15:34:04 · 649 阅读 · 0 评论 -
GCC 命令简明教程
前言GCC,全称The GNU Compiler Collection,包含了 C, C++, Objective-C, Fortran, Ada, Go等语言的编译器前端以及这些语言所依赖的一些库文件。虽然现在的IDE基本可以搞定很多编译的事情,但是很多时候,b比如我们看源码的时候、自己编写一些Python C++扩展模块的时候等,使用IDE可能会比较繁琐,这时候就需要手动编译,需要看懂或者会...原创 2020-02-18 13:40:40 · 848 阅读 · 0 评论 -
Git submodule - Git子模块简介
目录建立仓库1.1 创建主仓库1.2 创建子仓库提交内容2.1 提交到主工程的仓库2.2 提交到子模块的仓库克隆带子模块的仓库到本地更新子仓库总结参考文档正文软件开发中有一个DRY(Don’t Repeat yourself)原则,或者说DIE(Duplication Is Evil)原则,指的是尽可能减少一切重复工作,重用一切可能重用的东西,小到提取重复性代码,大到重...原创 2019-11-10 17:29:17 · 685 阅读 · 0 评论 -
FlatBuffer内部解析原理简介
简介Flatbuffer 是一个高效的跨平台、支持多种语言序列化数据的库。最初由谷歌为游戏开发而开发的,现在也用于多种对性能要求严苛的应用中。FlatBuffer有以下优点(直接翻译官网文档,详细介绍看这里):可不需要解析、拆包,而直接访问序列化后的数据;内存利用率高以及读取速度快;灵活性;生成代码量小;强类型;使用方便;代码跨平台无其他依赖。关于使用方法就不多介绍了,对于源...原创 2019-11-05 19:33:00 · 7401 阅读 · 1 评论