- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 Caffe框架源码剖析(9)—损失层SoftmaxWithLossLayer
类SoftmaxWithLossLayer包含类SoftmaxLayer的实例。其中SoftmaxLayer层在正向传导函数中将100*10的bottom_data,通过计算得到100*10的top_data。这可以理解为输入数据为100个样本,每个样本特征数量为10,计算这100个样本分别在10个类别上的概率。公式如下:
2016-09-20 13:22:30 18965
原创 Caffe框架源码剖析(8)—激活函数层ReLULayer
LeNet中使用修正线性单元(Rectified Linear Unit,ReLU)代替Sigmoid作为激活函数,目的是为了加速收敛。激活函数层ReLULayer原理很简单,就是实现了对输入数据的非负处理,将小于零的数据进行了截断。
2016-09-20 09:45:52 5479
原创 Caffe框架源码剖析(7)—全连接层InnerProductLayer
全连接层InnerProductLayer的原理很简单,说白了就是矩阵乘法运算。正向传导时输出数据等于输入数据乘上权重,如果有偏置项就再加上偏置项。写成公式就是:top_data = bottom_data * weight + bias.矩阵乘法在CPU端采用OpenBLAS实现,在GPU端则采用NVIDIA cuBLAS实现加速。
2016-09-19 16:30:48 7017 3
原创 Caffe框架源码剖析(6)—池化层PoolingLayer
池化层往往在卷积层后面,通过降采样来降低卷积层输出的特征向量,同时改善结果,不易出现过拟合。最常用的降采样方法有均值采样(取区域平均值作为降采样值)、最大值采样(取区域最大值作为降采样值)和随机采样(取区域内随机一个像素)等。PoolingLayer类从Layer基类单一继承而来,没有再多的子类。具体定义在pooling_layer.hpp中,template class
2016-09-19 13:40:54 6989
原创 Caffe框架源码剖析(5)—卷积层ConvolutionLayer
ConvolutionLayer是BaseConvolutionLayer的子类,功能较为简单。类中不包含成员变量,仅包含几个虚函数的实现。conv_layer.hpp头文件的定义如下:
2016-09-18 09:20:11 3694
原创 Caffe框架源码剖析(4)—卷积层基类BaseConvolutionLayer
数据层DataLayer正向传导的目标层是卷积层ConvolutionLayer。卷积层的是用一系列的权重滤波核与输入图像进行卷积,具体实现是通过将图像展开成向量,作用矩阵乘法实现卷积。
2016-09-16 15:47:11 1687
原创 Caffe框架源码剖析(3)—数据层DataLayer
Caffe网络正向传导时,首先进行的是DataLayer数据层的传导。该层从文件读取数据,加载至它的上一层卷积层。反向传导时,因为数据层不需要反传,所以它的Backward_cpu()和Backward_gpu()都是空函数。下面看一下DataLayer类图关系。
2016-09-13 08:27:17 4208
原创 Caffe支持多GPU分布式计算
Caffe允许多GPU间并行,与AlexNet不同,多GPU模式的内涵在于“不共享数据,却共享网络”。所以,允许多个solver存在,且应用到不同的GPU上去。第一个solver会成为root_solver,第二、第三个solver就会成为shared_solver。直接使用solver_count的地方是DataLayer层中的DataReader对象。每一个DataLayer都有一
2016-09-12 17:00:21 7920
原创 Caffe框架源码剖析(2)—训练网络
中间因为工程开发等杂七杂八原因暂停了Caffe源码分析,现在继续补上。上篇分析在函数 train() 中建立了网络,接下来就是进入训练网络步骤了。
2016-09-09 22:50:42 2860
关于卷积神经网络中类不平衡问题的综述
2019-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人