caffe学习1:几个常见的函数介绍

1  几个常用成员函数和变量介绍:

1.1 bottom和top

    caffe是层与层之间类似搭积木的方式组合起来的。bottom代表上一层的输入,top代表这一层的输出。bottom[0]代表这一层第0个输入,可能活有多个输入,比如在一对多的分类情况中就是可以有多个输入。

1.2 count()

    bottom[0]->count()指的是输入维度,如输入shape是(128,512,2,2),则count()返回的是128x512x2x2=262144,第1维度也就是bs=128是不会变的,后面三维对应c,h,w是有可能在传播过程中变化的;bottom[0]->count(1)代表的是从第一维度到最后一维度的长度,也就是512*2*2=cxhxw=2048

1.3 mini_batch和sub_batch_size

    bottom[0]->num()返回BS,如输入shape是(128,3,4,5),则BS=128,也就是mini_batch,意义就是经过mini_batch数据更新一次权重。

  sub_batch_size: 指的是caffe在定义model.prototxt。也就是每次实际传输的数量.经过iter_size更新一次参数.

    iter_size=bottom[0]->num()/sub_batch_size_;

    iter_size可以在solver配置中配置,sub_batch_size在peototxt中配置,只有当sub_batch_size没有配置的时候,iter_size的配置才有效。

1.4 set_gpu_data和set_gpu_diff

     ip_bottom_.set_gpu_data(bottom_data + batch_ip_offset);//举个例子

     caffe中类成员指向的数据空间有2种来源,一种是对象内部自己分配的,一种是外部指定的,为了区别这两种情况,如果是外部指定的需要调用set_cpu_data和set_gpu_data函数,这样把指针指向外部数据的空间,这样方便明确谁分配谁释放;这里是ip_bottom_的对象成员data_指向了外部的地址bottom_data + batch_ip_offset,详细的看blob.hpp

微信扫一扫下面的二维码,学习更多相关知识:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值