您当前的位置: 首页 >  网络
  • 3浏览

    0关注

    481博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

caffe源码解析:网络层的过滤Net::FilterNet及过滤规则StateMeetsRule

高精度计算机视觉 发布时间:2018-10-01 21:04:43 ,浏览量:3

过滤规则 Net::StateMeetsRule函数

作用:StateMeetsRule()中net的state是否满足NetStaterule 用构造net时的输入phase/level/stage与prototxt中各层的规则(include/exclude)比较,决定本层是否要包含在net中判断rule是否相同,分为5个判断 1. Phase: train, test, 比如train的layer不适用于test 2. Min_level:本层level不小于min_level,则满足包含条件 3. Max_level:本层leve不大于max_leve,则满足包含条件 4. Stage: stage能在NetStateRule::stage中找到,则包含本层 5. Non_stage: stages能在NetStateRule::non_stage中找到,则排除本层

解释

在caffe中,所有参数结构定义在caffe.proto中,由protobuf的protoc.exe生成caffe.pb.c及caffe.pb.h,从而对数据结构结构进行管理。在使用时,网络结构往往会定义在一个.prototxt的文件中。在定义net网络结构的prototxt文件中往往会定义某层的include/exclude参数,以确定该层网络是否要包含在某些具体的结构中或排除在外。顾名思义,include表示如果在构造net时如果满足include的条件,本层就包含在net中;exclude表示在构造net时如果满足exclude条件,本层就不会包含在net中。

管理这个被读取后的include还是exclude参数的,就是caffe.proto中的NetStateRule类,类中有phase、min_level、max_level、stage、not_stage 5个参数,也就是我们所说的过滤得规则。这些过滤规则往往是在网络构造时传入的(即:构造net时的输入参数),可用如下的方法来构造一个新net:

Net::Net(const string& param_file, Phase phase, const int level, const vector* stages, const Net* root_net)

对于包含include参数的层:如果满足min_level

关注
打赏
1659873853
查看更多评论
立即登录/注册

微信扫码登录

0.0497s