如何用caffe解决回归问题
2个回答
展开全部
如何在Caffe中配置每一个层的结构最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结。1.VisionLayers1.1卷积层(Convolution)类型:CONVOLUTION例子layers{name:"conv1"type:CONVOLUTIONbottom:"data"top:"conv1"blobs_lr:1#learningratemultiplierforthefiltersblobs_lr:2#learningratemultiplierforthebiasesweight_decay:1#weightdecaymultiplierforthefiltersweight_decay:0#weightdecaymultiplierforthebiasesconvolution_param{num_output:96#learn96filterskernel_size:11#eachfilteris11x11stride:4#step4pixelsbetweeneachfilterapplicationweight_filler{type:"gaussian"#initializethefiltersfromaGaussianstd:0.01#distributionwithstdev0.01(defaultmean:0)}bias_filler{type:"constant"#initializethebiasestozero(0)value:0}}}blobs_lr:学习率调整的参数,在上面的例子中设置权重学习率和运行中求解器给出的学习率一样,同时是偏置学习率为权重的两倍。weight_decay:卷积层的重要参数必须参数:num_output(c_o):过滤器的个数kernel_size(orkernel_handkernel_w):过滤器的大小可选参数:weight_filler[defaulttype:'constant'value:0]:参数的初始化方法bias_filler:偏置的初始化方法bias_term[defaulttrue]:指定是否是否开启偏置项pad(orpad_handpad_w)[default0]:指定在输入的每一边加上多少个像素stride(orstride_handstride_w)[default1]:指定过滤器的步长group(g)[default1]:Ifg>1,werestricttheconnectivityofeachfiltertoasubsetoftheinput.Specifically,theinputandoutputchannelsareseparatedintoggroups,andtheithoutputgroupchannelswillbeonlyconnectedtotheithinputgroupchannels.通过卷积后的大小变化:输入:n*c_i*h_i*w_i输出:n*c_o*h_o*w_o,其中h_o=(h_i+2*pad_h-kernel_h)/stride_h+1,w_o通过同样的方法计算。1.2池化层(Pooling)类型:POOLING例子layers{name:"pool1"type:POOLINGbottom:"conv1"top:"pool1"pooling_param{pool:MAXkernel_size:3#poolovera3x3regionstride:2#steptwopixels(inthebottomblob)betweenpoolingregions}}卷积层的重要参数必需参数:kernel_size(orkernel_handkernel_w):过滤器的大小可选参数:pool[defaultMAX]:pooling的方法,目前有MAX,AVE,和STOCHASTIC三种方法pad(orpad_handpad_w)[default0]:指定在输入的每一遍加上多少个像素stride(orstride_handstride_w)[default1]:指定过滤器的步长通过池化后的大小变化:输入:n*c_i*h_i*w_i输出:n*c_o*h_o*w_o,其中h_o=(h_i+2*pad_h-kernel_h)/stride_h+1,w_o通过同样的方法计算。1.3LocalResponseNormalization(LRN)类型:LRNLocalResponseNormalization是对一个局部的输入区域进行的归一化(激活a被加一个归一化权重(分母部分)生成了新的激活b),有两种不同的形式,一种的输入区域为相邻的channels(crosschannelLRN),另一种是为同一个channel内的空间区域(withinchannelLRN)计算公式:对每一个输入除以可选参数:local_size[default5]:对于crosschannelLRN为需要求和的邻近channel的数量;对于withinchannelLRN为需要求和的空间区域的边长alpha[default1]:scaling参数beta[default5]:指数norm_region[defaultACROSS_CHANNELS]:选择哪种LRN的方法ACROSS_CHANNELS或者WITHIN_CHANNEL2.LossLayers深度学习是通过最小化输出和目标的Loss来驱动学习。2.1Softmax类型:SOFTMAX_LOSS2.2Sum-of-Squares/Euclidean类型:EUCLIDEAN_LOSS2.3Hinge/Margin类型:HINGE_LOSS例子:#L1Normlayers{name:"loss"type:HINGE_LOSSbottom:"pred"bottom:"label"}#L2Normlayers{name:"loss"type:HINGE_LOSSbottom:"pred"bottom:"label"top:"loss"hinge_loss_param{norm:L2}}可选参数:norm[defaultL1]:选择L1或者L2范数输入:n*c*h*wPredictionsn*1*1*1Labels输出1*1*1*1ComputedLoss2.4SigmoidCross-Entropy类型:SIGMOID_CROSS_ENTROPY_LOSS2.5Infogain类型:INFOGAIN_LOSS2.6AccuracyandTop-k类型:ACCURACY用来计算输出和目标的正确率,事实上这不是一个loss,而且没有backward这一步。3.激励层(Activation/NeuronLayers)一般来说,激励层是element-wise的操作,输入和输出的大小相同,一般情况下就是一个非线性函数。3.1ReLU/Rectified-LinearandLeaky-ReLU类型:RELU例子:layers{name:"relu1"type:RELUbottom:"conv1"top:"conv1"}可选参数:negative_slope[default0]:指定输入值小于零时的输出。ReLU是目前使用做多的激励函数,主要因为其收敛更快,并且能保持同样效果。标准的ReLU函数为max(x,0),而一般为当x>0时输出x,但x<=0时输出negative_slope。RELU层支持in-place计算,这意味着bottom的输出和输入相同以避免内存的消耗。3.2Sigmoid类型:SIGMOID例子:layers{name:"encode1neuron"bottom:"encode1"top:"encode1neuron"type:SIGMOID}SIGMOID层通过sigmoid(x)计算每一个输入x的输出,函数如下图。3.3TanH/HyperbolicTangent类型:TANH例子:layers{name:"encode1neuron"bottom:"encode1"top:"encode1neuron"type:SIGMOID}TANH层通过tanh(x)计算每一个输入x的输出,函数如下图。3.3AbsoluteValue类型:ABSVAL例子:layers{name:"layer"bottom:"in"top:"out"type:ABSVAL}ABSVAL层通过abs(x)计算每一个输入x的输出。3.4Power类型:POWER例子:layers{name:"layer"bottom:"in"top:"out"type:POWERpower_param{power:1scale:1shift:0}}可选参数:power[default1]scale[default1]shift[default0]POWER层通过(shift+scale*x)^power计算每一个输入x的输出。3.5BNLL类型:BNLL例子:layers{name:"layer"bottom:"in"top:"out"type:BNLL}BNLL(binomialnormalloglikelihood)层通过log(1+exp(x))计算每一个输入x的输出。4.数据层(DataLayers)数据通过数据层进入Caffe,数据层在整个网络的底部。数据可以来自高效的数据库(LevelDB或者LMDB),直接来自内存。如果不追求高效性,可以以HDF5或者一般图像的格式从硬盘读取数据。4.1Database类型:DATA必须参数:source:包含数据的目录名称batch_size:一次处理的输入的数量可选参数:rand_skip:在开始的时候从输入中跳过这个数值,这在异步随机梯度下降(SGD)的时候非常有用backend[defaultLEVELDB]:选择使用LEVELDB或者LMDB4.2In-Memory类型:MEMORY_DATA必需参数:batch_size,channels,height,width:指定从内存读取数据的大小Thememorydatalayerreadsdatadirectlyfrommemory,withoutcopyingit.Inordertouseit,onemustcallMemoryDataLayer::Reset(fromC++)orNet.set_input_arrays(fromPython)inordertospecifyasourceofcontiguousdata(as4Drowmajorarray),whichisreadonebatch-sizedchunkatatime.4.3HDF5Input类型:HDF5_DATA必要参数:source:需要读取的文件名batch_size:一次处理的输入的数量4.4HDF5Output类型:HDF5_OUTPUT必要参数:file_name:输出的文件名HDF5的作用和这节中的其他的层不一样,它是把输入的blobs写到硬盘4.5Images类型:IMAGE_DATA必要参数:source:text文件的名字,每一行给出一张图片的文件名和labelbatch_size:一个batch中图片的数量可选参数:rand_skip:在开始的时候从输入中跳过这个数值,这在异步随机梯度下降(SGD)的时候非常有用shuffle[defaultfalse]new_height,new_width:把所有的图像resize到这个大小4.6Windows类型:WINDOW_DATA4.7Dummy类型:DUMMY_DATADummy层用于development和debugging。具体参数DummyDataParameter。5.一般层(CommonLayers)5.1全连接层InnerProduct类型:INNER_PRODUCT例子:layers{name:"fc8"type:INNER_PRODUCTblobs_lr:1#learningratemultiplierforthefiltersblobs_lr:2#learningratemultiplierforthebiasesweight_decay:1#weightdecaymultiplierforthefiltersweight_decay:0#weightdecaymultiplierforthebiasesinner_product_param{num_output:1000weight_filler{type:"gaussian"std:0.01}bias_filler{type:"constant"value:0}}bottom:"fc7"top:"fc8"}必要参数:num_output(c_o):过滤器的个数可选参数:weight_filler[defaulttype:'constant'value:0]:参数的初始化方法bias_filler:偏置的初始化方法bias_term[defaulttrue]:指定是否是否开启偏置项通过全连接层后的大小变化:输入:n*c_i*h_i*w_i输出:n*c_o*1*15.2Splitting类型:SPLITSplitting层可以把一个输入blob分离成多个输出blobs。这个用在当需要把一个blob输入到多个输出层的时候。5.3Flattening类型:FLATTENFlattening是把一个输入的大小为n*c*h*w变成一个简单的向量,其大小为n*(c*h*w)*1*1。5.4Concatenation类型:CONCAT例子:layers{name:"concat"bottom:"in1"bottom:"in2"top:"out"type:CONCATconcat_param{concat_dim:1}}可选参数:concat_dim[default1]:0代表链接num,1代表链接channels通过全连接层后的大小变化:输入:从1到K的每一个blob的大小n_i*c_i*h*w输出:如果concat_dim=0:(n_1+n_2++n_K)*c_1*h*w,需要保证所有输入的c_i相同。如果concat_dim=1:n_1*(c_1+c_2++c_K)*h*w,需要保证所有输入的n_i相同。通过Concatenation层,可以把多个的blobs链接成一个blob。5.5SlicingTheSLICElayerisautilitylayerthatslicesaninputlayertomultipleoutputlayersalongagivendimension(currentlynumorchannelonly)withgivensliceindices.5.6ElementwiseOperations类型:ELTWISE5.7Argmax类型:ARGMAX5.8Softmax类型:SOFTMAX5.9Mean-VarianceNormalization类型:MVN6.参考Caffe
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询