关闭

caffe中文件参数设置(四):其它常用层及其参数设置

标签: caffe常用层参数设置dropoutLayer
38人阅读 评论(0) 收藏 举报
分类:

本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置。

1、softmax-loss

softmax-loss层和softmax层计算大致是相同的。softmax是一个分类器,计算的是类别的概率(Likelihood),是Logistic Regression 的一种推广。Logistic Regression 只能用于二分类,而softmax可以用于多分类。

softmax与softmax-loss的区别:

softmax计算公式:

而softmax-loss计算公式:

关于两者的区别更加具体的介绍,可参考:softmax vs. softmax-loss

用户可能最终目的就是得到各个类别的概率似然值,这个时候就只需要一个 Softmax层,而不一定要进行softmax-Loss 操作;或者是用户有通过其他什么方式已经得到了某种概率似然值,然后要做最大似然估计,此时则只需要后面的 softmax-Loss 而不需要前面的 Softmax 操作。因此提供两个不同的 Layer 结构比只提供一个合在一起的 Softmax-Loss Layer 要灵活许多。

不管是softmax layer还是softmax-loss layer,都是没有参数的,只是层类型不同而也

softmax-loss layer:输出loss值

    layer {  
      name: "loss"  
      type: "SoftmaxWithLoss"  
      bottom: "ip1"  
      bottom: "label"  
      top: "loss"  
    }  
softmax layer: 输出似然值

    layers {  
      bottom: "cls3_fc"  
      top: "prob"  
      name: "prob"  
      type: “Softmax"  
    }  

2、Inner Product

全连接层,把输入当作成一个向量,输出也是一个简单向量(把输入数据blobs的width和height全变为1)。

输入: n*c0*h*w

输出: n*c1*1*1

全连接层实际上也是一种卷积层,只是它的卷积核大小和原数据大小一致。因此它的参数基本和卷积层的参数一样。

层类型:InnerProduct

lr_mult: 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr。如果有两个lr_mult, 则第一个表示权值的学习率,第二个表示偏置项的学习率。一般偏置项的学习率是权值学习率的两倍。

必须设置的参数:

    num_output: 过滤器(filfter)的个数

其它参数:

      weight_filler: 权值初始化。 默认为“constant",值全为0,很多时候我们用"xavier"算法来进行初始化,也可以设置为”gaussian"
      bias_filler: 偏置项的初始化。一般设置为"constant",值全为0。
      bias_term: 是否开启偏置项,默认为true, 开启
    layer {  
      name: "ip1"  
      type: "InnerProduct"  
      bottom: "pool2"  
      top: "ip1"  
      param {  
        lr_mult: 1  
      }  
      param {  
        lr_mult: 2  
      }  
      inner_product_param {  
        num_output: 500  
        weight_filler {  
          type: "xavier"  
        }  
        bias_filler {  
          type: "constant"  
        }  
      }  
    }  

3、accuracy

输出分类(预测)精确度,只有test阶段才有,因此需要加入include参数。

层类型:Accuracy
    layer {  
      name: "accuracy"  
      type: "Accuracy"  
      bottom: "ip2"  
      bottom: "label"  
      top: "accuracy"  
      include {  
        phase: TEST  
      }  
    }  

4、reshape

在不改变数据的情况下,改变输入的维度。

层类型:Reshape

先来看例子
    layer {  
        name: "reshape"  
        type: "Reshape"  
        bottom: "input"  
        top: "output"  
        reshape_param {  
          shape {  
            dim: 0  # copy the dimension from below  
            dim: 2  
            dim: 3  
            dim: -1 # infer it from the other dimensions  
          }  
        }  
      }  

有一个可选的参数组shape, 用于指定blob数据的各维的值(blob是一个四维的数据:n*c*w*h)。

dim:0  表示维度不变,即输入和输出是相同的维度。

dim:2 或 dim:3 将原来的维度变成2或3

dim:-1 表示由系统自动计算维度。数据的总量不变,系统会根据blob数据的其它三维来自动计算当前维的维度值 。

假设原数据为:64*3*28*28, 表示64张3通道的28*28的彩色图片

经过reshape变换:

    reshape_param {  
          shape {  
            dim: 0   
            dim: 0  
            dim: 14  
            dim: -1   
          }  
        }  

输出数据为:64*3*14*56

5、Dropout

Dropout是一个防止过拟合的trick。可以随机让网络某些隐含层节点的权重不工作。

先看例子:

    layer {  
      name: "drop7"  
      type: "Dropout"  
      bottom: "fc7-conv"  
      top: "fc7-conv"  
      dropout_param {  
        dropout_ratio: 0.5  
      }  
    }layer {  
      name: "drop7"  
      type: "Dropout"  
      bottom: "fc7-conv"  
      top: "fc7-conv"  
      dropout_param {  
        dropout_ratio: 0.5  
      }  
    }  
只需要设置一个dropout_ratio就可以了。

以上转自:http://blog.csdn.net/langb2014/article/details/50457709


0
0
查看评论

Caffe中损失层简介

caffe中实现了多种损失层,分别适用于多种场合。
  • u010682375
  • u010682375
  • 2017-08-29 11:00
  • 218

caffe solver.prototxt部分关键参数设置

假设整体训练样本60000个,验证样本40000个 1. 训练样本有关的参数: batch_size:600 所以,需要迭代60000/600=100次才能完成一次遍历训练,即一个epoch。 因此,test_interval设置为大于或者等于100再进行验证。当然你可以训练多个ep...
  • yiyisunshine
  • yiyisunshine
  • 2017-05-02 15:18
  • 793

caffe常用层的参数设置说明

package caffe; 前面几个比较基础不介绍了,关于caffe blob一些介绍,还有一些数据输入的参数介绍就不介绍了这里酒介绍一些常用到的和比较新的层的参数设置参数。如需转载,请注明:转载自 FillerParameter: 用于指定参数初始化方式,常用的方式有:constant,xa...
  • mxs30443
  • mxs30443
  • 2016-12-16 16:23
  • 5086

Caffe学习(六)损失层及其参数设置

机器学习的目的就是通过对训练样本输出与真实值不一致的进行惩罚,得到损失Loss,然后采用一定的优化算法对loss进行最小优化,进而得到合理的网络权值。本文介绍Caffe中含有的常见的LossLayer及其参数设置方法 Caffe的LossLayer主要由6个: (1)ContrastiveLoss...
  • u012177034
  • u012177034
  • 2016-08-07 19:29
  • 11569

Caffe学习(四)数据层及参数设置

caffe的各种数据层在caffe.proto文件中有定义。通过对定义的caffe.proto文件进行编译,产生支持各种层操作的c++代码。后面将会详细解读caffe.proto文件(在caffe里就是当做一个自动代码生成工具来用)。 本文主要介绍caffe可以读入数据的各种格式,方便后面采用ca...
  • u012177034
  • u012177034
  • 2016-08-06 08:40
  • 22875

Caffe中DeconvolutionLayer的用法

写在前面:关于Deconvolution 与Transposed Convolution的字面上的区别,在此不再讨论,以下统称为Deconvolution,可参考http://blog.csdn.net/u013250416/article/details/78247818。在我的理解里面,Conv...
  • u013250416
  • u013250416
  • 2018-01-05 21:07
  • 202

Caffe数据层及参数设置

深度学习交流QQ群:116270156 caffe的各种数据层在caffe.proto文件中有定义。通过对定义的caffe.proto文件进行编译,产生支持各种层操作的c++代码。后面将会详细解读caffe.proto文件(在caffe里就是当做一个自动代码生成工具来用)。 本文主要介绍ca...
  • sinat_24143931
  • sinat_24143931
  • 2017-12-16 11:32
  • 256

深度学习caffe平台--train_val.prototxt文件中视觉层(Vision Layers)层及参数详解

所有的层都具有的参数,如name, type, bottom, top和transform_param请参看前一篇文章 本文只讲解视觉层(Vision Layers)的参数,视觉层包括Convolution, Pooling, Local Response Normalization...
  • liuweizj12
  • liuweizj12
  • 2016-08-08 16:18
  • 1993

Caffe中卷基层和全连接层训练参数个数如何确定

慢慢填坑中,今天来仔细讲一下卷基层和全连接层训练参数个数如何确定的问题。我们以Mnist为例,首先贴出网络配置文件: name: "LeNet" layer { name: "mnist" type: "Data" top: ...
  • Sunshine_in_Moon
  • Sunshine_in_Moon
  • 2016-05-17 15:26
  • 5275

Caffe中文件参数设置(三):激活层(Activiation Layers)及其参数设置

在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的。从bottom得到一个blob数据输入,运算后,从top输入一个blob数据。在运算过程中,没有改变数据的大小,即输入和输出的数据大小是相等的。输入:n*c*h*w输出:n*c*h*w常用的激活函数有sigmoid, ...
  • kele_imon
  • kele_imon
  • 2018-01-18 10:05
  • 31
    个人资料
    • 访问:1290次
    • 积分:255
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:11篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档