摘要: Google在2017年上半年发表了一篇关于可以运行在手机等移动设备上的神经网络结构——[MobileNets](https://arxiv.org/abs/1704.04861)。MobileNets是基于深度可分离卷积(depthwise separable convolution)而设计的轻量级深度神经网络。这文章也介绍了两个超参数可以很好的平衡延时与精度,这两个超参数可以使人更方便地选出自己想要的网络结构。MobileNets的结构能用在图片分类、人脸识别、目标检测等上面。论文的[mxnet代码](https://github.com/apache/incubator-mxnet/blob/master/example/image-classification/symbols/mobilenet.py)已经开源,tensorflow的相关代码也开源了。 阅读全文
posted @ 2017-12-25 01:01 Thaurun 阅读(2271) 评论(0) 推荐(0) 编辑
摘要: 在2017年末,Face++发了一篇论文[ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices ](https://arxiv.org/abs/1707.01083)讨论了一个极有效率且可以运行在手机等移动设备上的网络结构——ShuffleNet。这个英文名我更愿意翻译成“重组通道网络”,ShuffleNet通过分组卷积与$1 \times 1$的卷积核来降低计算量,通过重组通道来丰富各个通道的信息。这个论文的mxnet源码的开源地址为:[MXShuffleNet](https://github.com/ZiyueHuang/MXShuffleNet)。 阅读全文
posted @ 2017-12-22 19:43 Thaurun 阅读(12294) 评论(0) 推荐(0) 编辑
摘要: ps-lite框架是DMLC组自行实现的parameter server通信框架,是DMLC其他项目的核心,例如其深度学习框架MXNET的分布式训练就依赖ps-lite的实现。 阅读全文
posted @ 2017-11-20 22:31 Thaurun 阅读(12900) 评论(1) 推荐(1) 编辑
摘要: 在之前的一篇博客中[L1正则化及其推导](http://www.cnblogs.com/heguanyou/p/7582578.html)推导证明了L1正则化是如何使参数稀疏化人,并且提到过L1正则化如果从贝叶斯的观点看来是Laplace先验,事实上如果从贝叶斯的观点,所有的正则化都是来自于对参数分布的先验。现在来看一下为什么Laplace先验会导出L1正则化,也顺便证明Gauss(高斯)先验会导出L2正则化。 阅读全文
posted @ 2017-10-18 19:17 Thaurun 阅读(21264) 评论(5) 推荐(6) 编辑
摘要: 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机采样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。从数据的分布来看就是使得生成的数据分布$P_z(z)$与原来的数据$P_{data}(x)$十分接近,理想的情况下为$P_z(z)=P_{data}(x)$。本文给出了GAN的Loss函数、说明GAN的训练原理,再结合最简单的例子mnist,用MXNet来实现GAN。 阅读全文
posted @ 2017-10-09 19:22 Thaurun 阅读(4850) 评论(2) 推荐(0) 编辑
摘要: dmlc-core是Distributed (Deep) Machine Learning Community的一个基础模块,这个模块用被应用到了mxnet中。dmlc-core在其中用了比软多的宏技巧,代码写得很简洁,值得大家学习。这博客中讲解了其中的宏和mxnet中是怎么向dmlc-core中注册函数和初始化参数的。 阅读全文
posted @ 2017-09-29 23:27 Thaurun 阅读(2370) 评论(1) 推荐(1) 编辑
摘要: mxnet([github-mxnet](https://github.com/apache/incubator-mxnet))的python接口相当完善,我们可以完全不看C\++的代码就能直接训练模型,如果我们要学习它的C\++的代码,从python训练与预测的模型中可以看到C\++的代码是怎么被调用的。上一篇博客中,我已经说明了mshadow的工作原理——[mshadow的原理--MXNet](http://www.cnblogs.com/heguanyou/p/7545344.html);在这一篇中,来说明一下mxnet的训练过程,看python是调用发哪些C\++的接口,但对C\++接口的更进一步解释并没有很详细,具体可以自己看源码,后面也可能会有新的博客解释。 阅读全文
posted @ 2017-09-27 22:23 Thaurun 阅读(6166) 评论(4) 推荐(1) 编辑
摘要: 在机器学习的Loss函数中,通常会添加一些正则化(正则化与一些贝叶斯先验本质上是一致的,比如L2L2正则化与高斯先验是一致的、L1L1正则化与拉普拉斯先验是一致的等等,在这里就不展开讨论)来降低模型的结构风险,这样可以使降低模型复杂度、防止参数过大等。大部分的课本和博客都是直接给出了L1L1正则化的解释解或者几何说明来得到L1L1正则化会使参数稀疏化,本来会给出详细的推导。 阅读全文
posted @ 2017-09-23 21:14 Thaurun 阅读(22290) 评论(12) 推荐(5) 编辑
摘要: mshadow的原理 MXNet 这文章主要解释了 "表达式模板" 的工作原理(也是mshadow的主要原理),文章的前半部分是翻译自 "exp template/README.md" 。我们会解释它为什么会影响编译代码的性能,表达式模板也是 矩阵运算库的用到的主要技巧,比如Eigen,GSL,bo 阅读全文
posted @ 2017-09-18 21:28 Thaurun 阅读(2637) 评论(4) 推荐(2) 编辑
摘要: 【引言】SphereFace在MegaFace数据集上识别率在2017年排名第一,用的A-Softmax Loss有着清晰的几何定义,能在比较小的数据集上达到不错的效果。这个是他们总结成果的论文:SphereFace: Deep Hypersphere Embedding for Face Recognition。我对论文做一个小的总结。 阅读全文
posted @ 2017-09-11 00:30 Thaurun 阅读(29045) 评论(2) 推荐(9) 编辑