Deep Learning
文章平均质量分 62
Buyi_Shizi
这个作者很懒,什么都没留下…
展开
-
caffe中的softmax layer
在caffe中的lenet实现最后一层是softmax layer,输出分类的结果,下面就简单介绍一下softmax回归。 1,首先,在caffe中,softmax layer输出的是原始的输入在每一个分类标签上的概率,例如在lenet网络中,输出的分类共有0-9的10中分类,那么softmax layer就会输出含有10个元素的向量,每一个元素表示输入在每一个分类上的概率。原创 2016-05-25 11:01:03 · 13143 阅读 · 0 评论 -
Inception module的演化
概述Inception module中突出强调了卷积单元特征提取能力的强化对最后的分类效果有着很大的帮助,但是GoogLenet中的Inception module面临一个问题就是卷积模块太多,造成的计算量很大,特别是对于5x5这种大的卷积核,GoogLenet不得不采用1x1的卷积核先进行降维,然后再进行5x5的卷积。 但是,除了使用1x1卷积核进行降维,其实还有别的方式降低大的卷积核的计算量,原创 2016-11-30 15:58:53 · 6573 阅读 · 1 评论 -
GoogLenet
面临问题1,当前深度学习网络规模越来越大,网络规模越来越大,网络中的参数也就也来越多,这就很有可能在训练中造成过拟合的问题。 2,当前的大规模网络涉及的计算量也是非常高,特别对于卷积层,卷积层的增加带来的就是计算量几何级别的上升。问题思考一味地位追求识别准确率而增加网络规模有一部分原因就是特征提取模块的设计没有能很好提取出图像的特征,如果能在基本的特征提取单元上做一些优化,然后用优化后的特征提取模原创 2016-11-30 16:06:28 · 11469 阅读 · 0 评论 -
GoogLenet Inception module的caffe实现
简述GoogLenet其实网络结构不是很复杂,之所以要总结这个代码实现,主要是想看一下Inception module在caffe中是怎么实现的。通过跟踪caffe代码,对Inception module也有了更深入的理解。 本文主要总结Inception module的实现,其他网络层的实现都是以前的网络差不多。具体实现本文以Inception(3a)为例,简述在caffe中是怎么实现的,首先I原创 2016-11-30 16:51:03 · 3628 阅读 · 0 评论 -
low level and hight level structure in CNN
什么是low-level和high-level特征为何卷积层越高就越能提取到high-level的特征原创 2016-11-21 21:50:02 · 1336 阅读 · 0 评论 -
caffe编译问题汇总
简述每次编译caffe出现的问题基本都不一样,在不同的系统和硬件平台上都会出现不一样的问题,这里就把每次编译出现的问题总结一下。undefined reference to cv:imread一看就知道是opencv库出现问题,这里是缺少了opencv_imgcodecs库,在Makefile文件中的LIBRARIES += opencv_core opencv_highgui opencv_img原创 2016-12-07 11:21:32 · 5859 阅读 · 1 评论 -
对ResNet的理解
ResNet要解决的问题深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好,但是事实上却不是这样,常规的网络的堆叠(plain network)在网络很深的时候,效果却越来越差了。 这里其中的原因之一即是网络越深,梯度消失的现象就越来越明显,网络的训练效果也不会很好。 但是现在浅层的网络(shallower network)又无法明显提升网络的识原创 2016-11-25 16:14:42 · 80412 阅读 · 10 评论 -
OUTRAGEOUSLY LARGE NEURAL NETWORKS
概述现在的CNN网络普遍都是做成通用分类网络,即一个网络要做很多种事物的分类和识别,但是仔细想想这样是不是真的合理,能不能设计一种网络,对一种输入用一种子网络去做,对另外一种输入就用另外一种子网络去做,这样做的好处就很明显,首先可以在显著增大网络规模的情况下,不会明显升高计算量;其次,我感觉这参数稀疏网络的实现方式。而在今年ICLR上,就有人提出这种网络结构OUTRAGEOUSLY LARGE NE原创 2017-01-03 21:09:52 · 1417 阅读 · 0 评论 -
caffe loss以及正则项反向传播过程
概述以前一直以为反向传播的过程是这样的,由Softmax计算得出分类loss,然后在加上L2正则项得出总的total_loss,然后再利用total_loss进行反向梯度的计算,而正则项会在每层的Forward函数中计算并返回,表面上感觉很对,但是实际分析就会发现这样想法不合理的地方,对正则项的计算,不同的solver是不一样的,而且正则项的方法也是有L2和L1, 每层layer的Forward函原创 2017-01-05 15:40:16 · 3205 阅读 · 0 评论 -
bvlc_reference_caffenet的test过程分析1
本文主要总结一下imageNet的test过程的最外层过程,即test() 函数。该函数主要分为四个部分: - 创建网络 - 拷贝权值参数 - 进行forward过程 - 统计最终的Accuracy和Loss # 创建网络 c++ Net<float> caffe_net(FLAGS_model, caffe::TEST); # 拷贝权值参数原创 2016-06-24 22:50:15 · 1997 阅读 · 0 评论 -
tiny_cnn程序总结2----网络的训练过程
在网络的整体架构搭建好之后,剩下的最重要的部分就是该怎么训练网络,如何更新各层网络的weight和bias参数,LeNet网络采用的optimization的方式是Stochastic Diagonal Levenberg-Marquardt的方式。下面就先介绍以下Stochastic Doagonal Levenberg-Marquardt的基本思想,然后再看tiny_cnn中的实现过程。原创 2016-05-19 11:24:57 · 2794 阅读 · 0 评论 -
batch learning和stochastic learning
在深度学习网络中,有两种主要的学习方式,batching learning 和 stochastic learning,下面就来对这两种学习方式做以下总结: batch learing:批量学习,这是一种离线的学习方法,大概的过程就是,每次网络的训练都是用所有的输入样本,针对一个训练样本,我可以比较网络输出和目标输出之间的残差cost(i),在求出所有样本对应的残差之后,对残差去平均,得原创 2016-05-19 16:23:21 · 5122 阅读 · 0 评论 -
caffe中的数据结构解析
caffe中数据结构主要包括caffe::Net,caffe::Layer,caffe::Solver三个主要大类。下面就这三个主要的数据结构做一下总结。 1,caffe:Net:这个数据结构用来表示整个网络,这个数据结构里包含了很多重要的变量。vectorLayer > > layers_变量存储的是每层layer结构体的指针。vectorBlob > > blobs_变量原创 2016-05-25 21:37:17 · 5210 阅读 · 1 评论 -
caffe中forward过程总结
caffe中最重要的两个部分就是forward和backward的过程,farward是根据输入数据正向预测输入属于哪一类;backward是根据输出的结果求得代价函数,然后根据代价函数反向求去其相对于各层网络参数的梯度的过程。我们先对farward过程做一下总结。 caffe中有两个过程会设计到farward,test和train,这里我们以train训练过程为例。int tr原创 2016-05-26 11:10:24 · 14704 阅读 · 0 评论 -
caffe中forward过程总结 2
前面http://blog.csdn.net/buyi_shizi/article/details/51504276 总结的是caffe有和卷积有关的forward过程,下面我们总结一下卷积之后和全连接网络Inner Product Layer有关的forward过程。第一层Inner Product void InnerProductLayer::Forward_cpu(const ve原创 2016-05-26 14:03:28 · 3071 阅读 · 0 评论 -
caffe中Blob数据结构
Blob数据结构是caffe中基本的数据存储单元,它主要存储的数据是网络中的中间数据变量,比如各层的输入和输出;代价函数关于网络各层参数的梯度。为什么要专门为数据设计一个存储结构,我的理解是这样保证的网络中的数据存储结构的统一性,由于网络中每个网络的计算过程都是相似的,所以如果能把数据存储也统一起来,使得整个程序也就很有结构。 1,Blob中除了存储重要的数据之外,还有一些标记数据的参数原创 2016-05-26 16:49:38 · 5582 阅读 · 0 评论 -
caffe中backward过程总结
backward是利用代价函数求取关于网络中每个参数梯度的过程,为后面更新网络参数做准备。求取梯度的过程也是一个矩阵运算的过程,后面会有详细介绍,本身求取梯度的过程并不是很复杂,而且网络中的各层求取梯度的过程都是相似的。下面就按照backward的运行顺序,从最后一层向前介绍caffe的backward的过程。softmax with loss layer:按理说每一层应该都要求一层梯度,原创 2016-05-27 11:14:20 · 10052 阅读 · 7 评论 -
Regularization正则化
这里只是简单说一下regularization的作用,内部的原理现在还没有完全弄懂,等把内部原理弄懂再回来补充。 在深度学习网络上,经常会遇到一个问题就是当我们利用样本对网络进行训练的时候,我们可以用很多层在训练样本上做到很好的效果;但是当我们用测试样本的时候,往往测试的结果和训练的效果差别很大。这就是一个overfitting的问题,就相当于在进行函数拟合的时候,本来用2次就能完成,但原创 2016-05-13 22:05:07 · 3482 阅读 · 0 评论 -
caffe中网络参数更新总结
前面已经总结了caffe中的foward和backward的过程,最后可以得到代价函数相对于网络中的每一个参数的梯度,接下来就要利用梯度对网络参数进行更新。 网络参数的更新就是网络学习罪关键的一个过程,怎么利用梯度对参数更新也是一个很重要的问题。对深度学习网络的优化也大多在这一方面,对网络参数的更新一般会遇到下面的问题:第一,简单的网络参数更新网络可能导致网络不够generalized,原创 2016-05-28 09:42:33 · 4984 阅读 · 0 评论 -
tiny_cnn 程序总结1----tiny_cnn简述
tiny_cnn实现了LeNet的字符识别功能,实现的方式也是利用卷集神经网络,整个网络共有6层,依次为convolution_layer,average_pooling_layer,convolution_layer,average_pooling_layer,convolution_layer,fully_connected_layer。 首先,第一层:convolution_l原创 2016-05-18 21:59:28 · 1506 阅读 · 0 评论 -
Fast convnets using group-wise brain damage
Fast convnets using group-wise brain damage出发点在convolution layer中,很多工具箱(caffe等)都把卷积操作转换成矩阵操作,通过增加并行度来提升计算速度。那么在这个基础上怎么继续加速矩阵运算呢? 对于一个输入是64x224x224的特征图来说,如果有64组3x3卷积核,那么正常的矩阵转化计算就变成 (224∗224)∗(3∗3∗64)∗原创 2017-01-14 15:57:22 · 2021 阅读 · 0 评论