0%

上次说到了 MXNet 的基本过程, 其中最重要的一步是构建 Executor, 而构建 Executor 中最重要的就是通过 Bind 方法把 MXNet 的各个部件如 Symbol, context, NDArray 参数等数据捏合到一起, 因此, 要深入理解 MXNet 的计算过程, 需要对该 Bind 方法进行深入研究. 由于 Bind 方法中的参数, 尤其是 NDArray 的参数要求是和 computation graph 的 topo 序相同, 因此, 直接分析 Bind 仍然不能理解这一点, 所以, 这里首先分析 SimpleBind, 了解 MXNet 的 Bind 需要怎样的参数输入, 而 SimpleBind 又是怎样实现这一点的.

阅读全文 »

对于用户来说, MXNet 工作的基本流程是, 首先通过 symbol 定义一个 computation graph, 然后, 把数据绑定到 symbol 上, 最后, 执行 forward 和 backward 完成模型的优化. 下面通过一个最简单的例子来说明这个过程.

阅读全文 »

MXNet 和 tensorflow 都提供了完善的 Python 借口, Python 相对于 C++ 来多极其方便, 因此 Python 比较多. 深入分析了解 MXNet 的源码能够带来诸多好处, 首先 MXNet 是遵循 C++11标准的, 使用了大量的 C++11 的新特性, 分析 MXNet 源码可以帮助学习 C++11 的新特性. 其次, MXNet 遵循了模块化的系统设计思想, 整个系统设计非常完善, 并且和 tensorflow 相比, MXNet 的代码量要少很多, 分析 MXNet 的源码可以帮助学习设计简洁高效的系统.

阅读全文 »

参数是机器学习中很重要的一个部分, 参数是用户和机器学习框架进行交互的一种方式. 这篇文章将会介绍 DMLC 的参数模块, 设计该该轻量级的 C++ 模块的目的就是支持通用的机器学习库, 其具备以下几个优点:

阅读全文 »

翻译自 MXNet 官方文档
深度学习中, 我们希望框架运行速度越快越好, 支持的数据集/模型越大越好. 一种显而易见的方法就是堆机器, 堆显卡. 这种方案带来的问题是: 如何在多台机器, 多块显卡上进行并行计算, 以及如何在多线程的情况下正确而高效的实现计算的同步.

阅读全文 »

翻译自 MXNet 官方文档
在深度学习领域有很多深度学习库, 每个库都有其独特之处. 从系统优化和用户体验角度讲, 每个库有什么优点和缺点呢? 这篇文章对编程模型做了比较, 讨论了他们基本的优缺点以及我们可以从中学习到什么.

阅读全文 »

翻译自 MXNet 官方文档.
在深度学习中, 我们总是希望能够训练更大, 更深的网络模型. 虽然硬件的发展速度很快, 但是, 为了构建更复杂的深层网络模型, 总是希望有更多的显存/内存可用. 对于同样的一个网络, 如果能够使用更少的内存占用, 也就意味着在训练的时候可以使用更大的 batch size, 通常也意味着更高的 GPU 使用率.

阅读全文 »

合理地使用网络共享可以极大地提高效率. 比如, 通过 samba 服务在本地调试代码, 然后放到集群上训练. 在家的时候, 在 PC 上搭建一套 ftp 服务之后, 可以在pad上直接用 AVPlayer 看 PC 上的视频或者用 PDF Expert 看论文. 不占用本地空间, 而且, 对 PDF 的标注直接保存在 PC 上. 本文记录使用 Resilio Sync 进行文件共享的方法.

阅读全文 »

学情跟踪是一个比较典型的时间序列的数据分析和预测. 其目的是根据之前的学习情况, 对学生的学习情况进行建模. 虽然这里描述的是学情跟踪建模, 但是, 接下来描述的算法同样适用于其它的类似的场景, 例如股票涨跌情况预测.
在这一类应用场景中, 与其它应用最重要的一个区别是, 该类应用需要预测每一个输出位置的概率. 例如, 需要预测每一只股票的涨跌. 而其它场景需要预测的一般都是 one hot 类型.

阅读全文 »

RNN 是另外一种在深度学习领域常见的网络模型, 在语音识别, NLP 等需要对 sequence 数据建模的场景中应用广泛. 由于 sequence 数据的长度是变化的, 所以, 在实际工程中, 常见的一种做法是指定一个 sequence 的长度 \(L\)(一般是最长的一个 sequence 的长度), 然后, 把长度不等于 \(L\) 的数据进行 mask, 从而使得所有的 sequence 都具有相同的长度. 然而, 这种做法存在的问题是, 在 sequence 的长度差别比较大的情况下, 这样生硬的进行 mask 的做法显然不靠谱. 当前, 比较常见一种 trade-off 的做法是 Bucket RNN.

阅读全文 »