在MobileNet, ShuffleMet等轻量级网络中,depthwise separable conv是一个很流行的设计。借助Xception: Deep Learning with Depthwise separable Convolution,对这种分解卷积的思路做一个总结。
CS229 简单的监督学习方法
回过头去复习一下基础的监督学习算法,主要包括最小二乘法和logistic回归。
Hack PyCaffe
这篇文章主要是Github: PyCaffe Tutorial中Hack Pycaffe的翻译整理。后续可能会加上一些使用boost和C++为Python接口提供后端的解释。这里主要讨论如何为Pycaffe添加自己想要的功能。至于Pycaffe的使用,留待以后的文章整理。
论文 - Learning both Weights and Connections for Efficient Neural Networks
Han Song的Deep Compression是模型压缩方面很重要的论文。在Deep Compression中,作者提出了三个步骤来进行模型压缩:剪枝,量化和霍夫曼编码。其中,剪枝对应的方法就是基于本文要总结的这篇论文:Learning both Weights and Connections for Efficient Neural Networks。在这篇论文中,作者介绍了如何在不损失精度的前提下,对深度学习的网络模型进行剪枝,从而达到减小模型大小的目的。
Caffe中的Net实现
Caffe中使用Net
实现神经网络,这篇文章对应Caffe代码总结Net
的实现。
捉bug记 - JupyterNotebook中使用pycaffe加载多个模型一直等待的现象
JupyteNotebook是个很好的工具,但是在使用pycaffe试图在notebook中同时加载多个caffemodel模型的时候,却出现了无法加载的问题。
bug重现
我想在notebook中比较两个使用不同方法训练出来的模型,它们使用了同样的LMDB文件进行训练。加载第一个模型没有问题,但当加载第二个模型时,却一直等待。在StackOverflow上我发现了类似的问题,可以见:Can’t load 2 models in pycaffe。
解决方法
这是由于pycaffe(是否要加上jupyter-notebook?因为不用notebook,以前没有出现过类似问题)不能并发读取同样的LMDB所导致的。但是很遗憾,没有发现太好的解决办法。最后只能是将LMDB重新copy了一份,并修改prototxt文件,使得两个模型分别读取不同的LMDB。
Caffe中卷积的大致实现思路
参考资料:知乎:在Caffe中如何计算卷积。
论文 - Learning Structured Sparsity in Deep Neural Networks
DNN的稀疏化?用L1正则项不就好了?在很多场合,这种方法的确可行。但是当试图使用FPGA/AISC加速DNN的前向计算时,我们希望DNN的参数能有一些结构化的稀疏性质。这样才能减少不必要的cache missing等问题。在这篇文章中,作者提出了一种结构化稀疏的方法,能够在不损失精度的前提下,对深度神经网络进行稀疏化,达到加速的目的。本文作者温伟,目前是杜克大学Chen Yiran组的博士生,做了很多关于结构化稀疏和DNN加速相关的工作。本文发表在NIPS 2016上。本文的代码已经公开:GitHub
捉bug记 - Cannot create Cublas handle. Cublas won't be available.
这两天在使用Caffe的时候出现了一个奇怪的bug。当使用C++接口时,完全没有问题;但是当使用python接口时,会出现错误提示如下:1
2common.cpp:114] Cannot create Cublas handle. Cublas won't be available.
common.cpp:121] Cannot create Curand generator. Curand won't be available.