0%

过去两年用mxnet定制了很多op, 深入学习了mxnet源码. 本系列以mxnet v0.7.0 代码为主, 深入分析mxnet的源码, 做一个阶段性的总结, 同时也希望能在mxnet上进行深度开发的同学提供帮助.

阅读全文 »

MShadow 是一个轻量级的 Tensor Template Library。mshadow 同时支持 C++ 和 CUDA,一套代码既可以跑在CPU上,也可以跑在GPU上。并且是lazy computation的。如果对于cuda上面的运行没有极致要求的话,mshadow对于Tensor的计算是个很好的选择,性能也不会很差。如果对于性能有极致的需求,那就要手动去tune了,或者也可以尝试一下tvm。
本文尝试给mshadow添加一个新的extension, mshadow::expr::resize。完整实现在 Github

阅读全文 »

在深度学习中,随着模型和数据的不断增长,在大部分情况下需要使用多卡或者多机进行训练。在多卡或者多机训练中。一般有数据并行和模型并行两种并行方案,数据并行的参数更新中有同步更新和异步更新两种方法,本文讨论的是数据并行中的同步参数更新的一种方法。

阅读全文 »

MXNet中对classification任务提供了把训练图像数据转换成一个大的二进制文件的方法,但是,对于其它任务例如语义分割等,并没有提供类似的功能。这里,介绍一下如何使用LMDB的Python接口把语义分割训练数据的图像和标签转换成LMDB的文件。首先,这里简要介绍一下问什么要把图像文件转换成大的二进制文件。

阅读全文 »

Gluon IO 使用方法中介绍了如何使用MXNet的IO接口。Gluon 是 MXNet提供的一个新的封装接口,非常容易在静态图和动态图之间转换,动态图在调试的时候非常有用,静态图在训练的时候速度更占优势。目前比较推荐使用Gluon接口。而且,Gluon封装了一个使用更加方便的IO接口,这里记录下Gluon的IO使用方法。
阅读全文 »

NAS 提供了一种自动化搜索网络结构的方法. 其大体思想是固定网络的训练过程, 然后寻找通过该训练过程可以达到最好效果的网络结构. 从一定程度上看这种方法和我们通常选定一种网络结构然后使用不同的优化参数和优化方法找到最好的模型参数的过程恰好相反.

阅读全文 »

在ConvNet中, 大部分的计算耗费在计算卷积的过程中, 尤其是在端上设备中, 对于性能的要求更为苛刻. 程序的性能优化是一个复杂而庞大的话题. 高性能计算就像系统设计一样, 虽然有一些指导原则, 但是, 对于不同的场景需要有不同的设计方案, 因此, 对于同一个优化问题, 不同的人可能会给出完全不同的优化方案. 本文不是探讨硬件和代码级的优化, 仅针对计算卷积的一个特定方法 — Winograd方法做一个简单的记述.

阅读全文 »

Faster RCNN 的工作具有里程碑的意义,把 Region Proposal 和具体的检测过程全部通过 CNN 完成,实现了整个目标检测过程的 end to end 的训练。后续的大部分工作,例如 SSD, RFCN,FPN,Mask RCNN 等都延续了 RPN 的思路,因此,充分理解 Faster RCNN 对后续的工作有很多帮助。

阅读全文 »