caffe 学习

一、
C++里整型除了有小数是向下取整,忽略小数pool层有ceil和卷积不一样
https://github.com/BVLC/caffe/blob/master/src/caffe/layers/pooling_layer.cpp
pooled_height_ = static_cast<int>(ceil(static_cast<float>(height_ + 2 * pad_h_ - kernel_h_) / stride_h_)) + 1;
pooled_width_ = static_cast<int>(ceil(static_cast<float>(width_ + 2 * pad_w_ - kernel_w_) / stride_w_)) + 1;
float ceil ( float value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常integer 要小。
static_cast显示类型转换 static_cast<类型名>(表达式)




二、
Global average Pooling
主要是用来解决全连接的问题,其主要是是将最后一层的特征图进行整张图的一个均值池化,形成一个特征点,将这些特征点组成最后的特征向量
if (global_pooling_) {
    kernel_h_ = bottom[0]->height();
    kernel_w_ = bottom[0]->width();
  }他的意思应该是讲池化filter大小和输入的feature map的大小一致,
global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值。主要是进行全连接的替换,减少参数的数量,这样计算的话,global average pooling层是没有数据参数的,优点整个网路在结构上做正则化防止过拟合。



三、
CHECK_EQ(X,Y)   CHECK((X)==(Y))
CHECK_LT(X,Y)   CHECK((X)<(Y))
CHECK_GT(X,Y)   CHECK((X)>(Y))
CHECK_LE(X,Y)   CHECK((X)<=(Y))
CHECK_GE(X,Y)   CHECK((X)>=(Y))
CHECK_NE(X,Y)   CHECK((X)!=(Y))



四、
卷积核的扩张!!!!
带有dilation的卷积层的输出为:
const int output_h = (height + 2 * pad_h - (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1;  
  const int output_w = (width + 2 * pad_w - (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1;



caffe cuda的编程 CUDA_KERNEL_LOOP 线程的计算?
CUDA_KERNEL_LOOP(index, nthreads) {
// 该线程对应的top blob(N,C,H,W)中的N,即样本个数
const int n = index / pooled_width / pooled_height / channels;
// 该线程对应的top blob(N,C,H,W)中的C,即第C个Channel(number of feature maps)
const int c = (index / pooled_width / pooled_height) % channels;
// 该线程对应的top blob(N,C,H,W)中的H,输出Feature Map的中的高的坐标
const int ph = (index / pooled_width) % pooled_height;
// 该线程对应的top blob(N,C,H,W)中的W,输出Feature Map的中的宽的坐标
const int pw = index % pooled_width;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值