来呀,快活呀~


  • 首页

  • 归档

  • 标签

  • 关于

  • 搜索
close
来呀,快活呀~

Debian9 编译Caffe的一个坑

发表于 2019-11-24

记录一个编译Caffe的坑。环境,Debian 9 + GCC 6.3.0,出现的问题:

1
2
3
4
5
In file included from /usr/local/cuda/include/cuda_runtime.h:120:0,
from <command-line>:0:
/usr/local/cuda/include/crt/common_functions.h:74:24: error: token ""__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER
_BUILD__ instead."" is not valid in preprocessor expressions
#define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."

如果你和我一样,自从从Github clone Caffe后很长时间没有与master合并过,就有可能出现这个问题。

解决方法:这个问题应该是和boost有关,最初我看到的解决方法是将boost升级到1.65.1。不过感觉好麻烦,后来找到了这个github issue,修改include/caffe/common.hpp即可。

阅读全文 »
来呀,快活呀~

论文 - MetaPruning:Meta Learning for Automatic Neural Network Channel Pruning

发表于 2019-10-26

这篇文章来自于旷视。旷视内部有一个基础模型组,孙剑老师也是很看好NAS相关的技术,相信这篇文章无论从学术上还是工程落地上都有可以让人借鉴的地方。回到文章本身,模型剪枝算法能够减少模型计算量,实现模型压缩和加速的目的,但是模型剪枝过程中确定剪枝比例等参数的过程实在让人头痛。这篇文章提出了PruningNet的概念,自动为剪枝后的模型生成权重,从而绕过了费时的retrain步骤。并且能够和进化算法等搜索方法结合,通过搜索编码network的coding vector,自动地根据所给约束搜索剪枝后的网络结构。和AutoML技术相比,这种方法并不是从头搜索,而是从已有的大模型出发,从而缩小了搜索空间,节省了搜索算力和时间。个人觉得这种剪枝和NAS结合的方法,应该会在以后吸引越来越多人的注意。这篇文章的代码已经开源在了Github:MetaPruning。

这篇文章首发于Paper Weekly公众号,欢迎关注。

阅读全文 »
来呀,快活呀~

论文 - Bag of Tricks for Image Classification with Convolutional Neural Networks

发表于 2019-07-06

这是Bag of Tricks for Image Classification with Convolutional Neural Networks的笔记。这篇文章躺在阅读列表里面很久了,里面的技术之前也用了一些。最近趁着做SOTA模型的训练,把论文整体读了一下,记录在这里。这篇文章总结的仍然是在通用学术数据集上的tricks。对于实际工作中遇到的训练任务,仍然是要结合问题本身来改进模型和训练算法。毕竟,没有银弹。

软工里面没有银弹,数据科学同样这样

阅读全文 »
来呀,快活呀~

Hello TVM

发表于 2019-06-29

TVM 是什么?A compiler stack,graph level / operator level optimization,目的是(不同框架的)深度学习模型在不同硬件平台上提高 performance (我要更快!)

TVM, a compiler that takes a high-level specification of a deep learning program from existing frameworks and generates low-level optimized code for a diverse set of hardware back-ends.

compiler比较好理解。C编译器将C代码转换为汇编,再进一步处理成CPU可以理解的机器码。TVM的compiler是指将不同前端深度学习框架训练的模型,转换为统一的中间语言表示。stack我的理解是,TVM还提供了后续处理方法,对IR进行优化(graph / operator level),并转换为目标硬件上的代码逻辑(可能会进行benchmark,反复进行上述优化),从而实现了端到端的深度学习模型部署。

我刚刚接触TVM,这篇主要介绍了如何编译TVM,以及如何使用TVM加载mxnet模型,进行前向计算。Hello TVM!

TVM概念图

阅读全文 »
来呀,快活呀~

重读 C++ Primer

发表于 2019-05-01

重读C++ Primer第五版,整理一些糊涂的语法知识点。

入门到放弃
阅读全文 »
来呀,快活呀~

YOLO Caffe模型转换BN的坑

发表于 2019-03-09

YOLO虽好,但是Darknet框架实在是小众,有必要在Inference阶段将其转换为其他框架,以便后续统一部署和管理。Caffe作为小巧灵活的老资格框架,使用灵活,方便魔改,所以尝试将Darknet训练的YOLO模型转换为Caffe。这里简单记录下YOLO V3 原始Darknet模型转换为Caffe模型过程中的一个坑。

阅读全文 »
来呀,快活呀~

MacOS Mojave更新之后一定要做这几件事!

发表于 2018-10-27

很奇怪,对于手机上的APP,我一般能不升级就不升级;但是对于PC上的软件或操作系统更新,则是能升级就升级。。在将手中的MacOS更新到最新版本Mojave后,发现了一些需要手动调节的问题,记录在这里,原谅我标题党的画风。。。

阅读全文 »

来呀,快活呀~

论文 - Rethinking The Value of Network Pruning

发表于 2018-10-22

这篇文章是ICLR 2019的投稿文章,最近也引发了大家的注意。在我的博客中,已经对此做过简单的介绍,请参考论文总结 - 模型剪枝 Model Pruning。

这篇文章的主要观点在于想纠正人们之前的认识误区。当然这个认识误区和DL的发展是密不可分的。DL中最先提出的AlexNet是一个很大的模型。后面的研究者虽然也在不断发明新的网络结构(如inception,Global Pooling,ResNet等)来获得参数更少更强大的模型,但模型的size总还是很大。既然研究社区是从这样的“大”模型出发的,那当面对工程上需要小模型以便在手机等移动设备上使用时,很自然的一条路就是去除大模型中已有的参数从而得到小模型。也是很自然的,我们需要保留大模型中“有用的”那些参数,让小模型以此为基础进行fine tune,补偿因为去除参数而导致的模型性能下降。

然而,自然的想法就是合理的么?这篇文章对此提出了质疑。这篇论文的主要思路已经在上面贴出的博文链接中说过了。这篇文章主要是结合作者开源的代码对论文进行梳理:Eric-mingjie/rethinking-network-pruning。

阅读全文 »
来呀,快活呀~

论文总结 - 模型剪枝 Model Pruning

发表于 2018-10-03

模型剪枝是常用的模型压缩方法之一。这篇是最近看的模型剪枝相关论文的总结。

剪枝的学问

阅读全文 »
来呀,快活呀~

VIM安装YouCompleteMe和Jedi进行自动补全

发表于 2018-10-02

这篇主要记录自己尝试编译Anaconda + VIM并安装Jedi和YouCompleteMe自动补全插件的过程。踩了一些坑,不过最后还是装上了。给VIM装上了Dracula主题,有点小清新的感觉~

我的VIM

阅读全文 »
123…10
一个脱离了高级趣味的人

一个脱离了高级趣味的人

相与枕藉乎舟中,不知东方之既白

91 日志
36 标签
RSS
GitHub 微博
© 2021 一个脱离了高级趣味的人
由 Hexo 强力驱动
主题 - NexT.Muse