• caffe中的filler.hpp源码的作用:


    filler.hpp文件:(它应该没有对应的.cpp文件,一切实现都是在头文件中定义的,可能是因为filler只分在网络初始化时用到那么一次吧)

    1,首先定义了基类:Filler,它包括:一个纯虚函数:filler(用于在子类里根据不同的情况具体实现)

                                            一个数据:filler_param_(类型为FillerParameter,这是在proto里定义的)

    2 定义具体子类继承的实现:共有7种请况(这是用来给权值初始化的7种方法 ):

    constant

    gaussian

    positive_unitball

    uniform

    xavier

    msra

    bilinear

    然后,子类的具体实现的函数为:filler(参数为:blob块),它干了什么事呢??

    根据 filler_param_ 的参数把传入的blob块里的数据(mutable_cpu_data()) 按照指定的方法(7种方法之一)分别赋值;

    3, 定义一个 GetFiller 的函数:GetFiller(传入参数为:FillerParameter类型的数据),返回为:上面7种子类实现的一个指针;

    它干了一个什么事呢?就是根据传入的fillerparameter中的选定的type类型(即权值赋值的方法),然后返回一个对应的方法实现一个指针。(这里就是用指针来实现C++强大的多态),现在呢,我们就可以用返回的地址来实现具体操作了。

    (对于具体细节可以看一下源码)

  • 相关阅读:
    2072=删数问题
    2872=M--二分查找
    4165=全排列问题
    2805=大家快来A水题
    4148=1.1联结词真值运算
    2748=第X大的数
    3479=青蛙过河
    1200=汉诺塔
    Leetcode92_反转链表II
    Leetcode206_反转链表
  • 原文地址:https://www.cnblogs.com/yinheyi/p/5980348.html
Copyright © 2020-2023  润新知