Caffe 初学拾遗(九) Layer Catalogue (Activation/Neuron Layer)

17 篇文章 0 订阅

{承接CNN学习入门,笔者在这里对Caffe官方网站上的相关介绍进行了翻译总结,欢迎大家交流指正}

本文基于此刻最新的release,Caffe-rc3


3. Activation/Neuron Layer:

一般而言,activation/neuron Layers执行的是逐元素操作,取出bottom blob中的数据,生成同样大小的top blob的数据。

在接下来要介绍的layers中,由于input与output的size的一致性,我们将其忽略。

Input: n * c * h * w

Output: n *c * h * w


ReLU/Rectified-Linear and Leaky-ReLU:

1.网络类型:ReLU

2.CPU版本实现:./src/caffe/layers/relu_layer.cpp

3.GPU版本实现:./src/caffe/layers/relu_layer.cu

4.参数(ReLUParameter relu_param):

4.1 Optional

4.1.1 negative_slope [default 0]: 是否将负值部分通过乘以negative_slope使其得以保留而不是置为0。

E.g.

layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
对于给出的input value x,ReLU Layer计算:

if x > 0: return x

if x < 0: return x * negative_slope

如果negative_slope参数未设定,则为标准ReLU函数,max(x,0)。

同时也支持恒等函数,top与bottom完全一致,以保留内存空间。


Sigmoid/TanH/Hyperbolic Tangent/Absolute Value/BNLL:

1.网络类型:

Sigmoid/TanH/AbsVal/BNLL(binomial normal log likelihood)

2.CPU版本实现:

./src/caffe/layers/sigmoid_layer.cpp tanh_layer.cpp absval_layer.cpp bnll_layer.cpp

3.GPU版本实现:

./src/caffe/layers/sigmoid_layer.cu 

tanh_layer.cu absval_layer.cu bnll_layer.cu

E.g.

layer {
  name: "encode1neuron"
  bottom: "encode1"
  top: "encode1neuron"
  type: "Sigmoid"
}

layer {
  name: "layer"
  bottom: "in"
  top: "out"
  type: "TanH"
}
layer {
  name: "layer"
  bottom: "in"
  top: "out"
  type: "AbsVal"
}
layer {
  name: "layer"
  bottom: "in"
  top: "out"
  type: BNLL
}

各Layer逐元素的计算output(Sigmoid(x)/tanh(x)/abs(x)/log(1+exp(x)))。


Power:

1.网络类型:Power

2.CPU版本实现:./src/caffe/layers/power_layer.cpp

3.GPU版本实现:./src/caffe/layers/power_layer.cu

4.参数(PowerParameter power_param):

4.1 Optional

4.1.1 power [default 1]

4.1.2 scale [default 1]

4.1.3 shift [default 0]

E.g.

layer {
  name: "layer"
  bottom: "in"
  top: "out"
  type: "Power"
  power_param {
    power: 1
    scale: 1
    shift: 0
  }
}
Power Layer逐元素的计算output((shift + scale * x)^power)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux创始人LinusTorvalds有一句名言:Talk is cheap, Show me the code.(冗谈不够,放码过来!)。 代码阅读是从入门到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。  YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。YOLOv3的实现Darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。  本课程将解析YOLOv3的实现原理和源码,具体内容包括: YOLO目标检测原理  神经网络及Darknet的C语言实现,尤其是反向传播的梯度求解和误差计算 代码阅读工具及方法 深度学习计算的利器:BLAS和GEMM GPU的CUDA编程方法及在Darknet的应用 YOLOv3的程序流程及各层的源码解析本课程将提供注释后的Darknet的源码程序文件。  除本课程《YOLOv3目标检测:原理与源码解析》外,本人推出了有关YOLOv3目标检测的系列课程,包括:   《YOLOv3目标检测实战:训练自己的数据集》  《YOLOv3目标检测实战:交通标志识别》  《YOLOv3目标检测:原理与源码解析》  《YOLOv3目标检测:网络模型改进方法》 建议先学习课程《YOLOv3目标检测实战:训练自己的数据集》或课程《YOLOv3目标检测实战:交通标志识别》,对YOLOv3的使用方法了解以后再学习本课程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值