博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】Caffe初试(七)其它常用层及参数
阅读量:5047 次
发布时间:2019-06-12

本文共 2855 字,大约阅读时间需要 9 分钟。

 

本文讲解一些其它的常用层,包括: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层,而不一定要进行softmax-loss操作;或者是用户有通过其它什么方式已经得到了某种概率似然值,然后要做最大似然估计,此时则只需要后面的softmax-loss,而不需要前面的softmax操作。因此提供两个不同的Layer结构比只提供一个合在一起的softmax-loss Layer要灵活许多。

不管是softmax Layer还是soft-loss Layer,都是没有参数的,只是层类型不同而已。

softmax-loss Layer:输出loss值

layer {    name: "loss"    type: "SoftmaxWithLoss"    bottom: "ip1"    bottom: "label"    top: "loss"  }
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:过滤器(filter)的个数

其它参数:

  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数据的各维的值(bolb是一个四维的数据: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就可以了。

    

 

转载于:https://www.cnblogs.com/codingmengmeng/p/6239118.html

你可能感兴趣的文章
VS 2010打开设计器出现错误
查看>>
SQLServer 镜像功能完全实现
查看>>
Vue-详解设置路由导航的两种方法
查看>>
一个mysql主从复制的配置案例
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
dvwa网络渗透测试环境的搭建
查看>>
Win8 安装VS2012 和 Sql Server失败问题
查看>>
过点(2,4)作一直线在第一象限与两轴围成三角形,问三角形面积的最小值?...
查看>>
java aes CBC的填充方式发现
查看>>
使用ionic cordova build android --release --prod命令打包报有如下错误及解决方法
查看>>
BZOJ 2338 HNOI2011 数矩形 计算几何
查看>>
关于页面<!DOCTYPE>声明
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
C++标准库vector使用(更新中...)
查看>>
cocos2d-x 2.2.6 之 .xml文件数据读取
查看>>
枚举的使用
查看>>
BZOJ 1531 二进制优化多重背包
查看>>
BZOJ 2324 (有上下界的)费用流
查看>>
python3基础06(随机数的使用)
查看>>
Zookeeper系列(二)特征及应用场景
查看>>