代码之家  ›  专栏  ›  技术社区  ›  lightalchemist

从Shogun-ShareBoost模型中获取权重参数

  •  0
  • lightalchemist  · 技术社区  · 7 年前

    我有一个训练有素的shareboost模型。如何获取模型的权重参数/向量?

    我试着得到单独的线性机器并提取单独的权重向量,但是不像 linear svm 它似乎没有 get_w() 方法。

    而且,尽管C++ SeaBooSoad类是一个子类 CMachine , the Parameters 从中获取的对象 m_parameters (见 docs )似乎没有可用的参数。

    下面的代码是我尝试过的。

    num_machines = shareboost.get_num_machines()
    # num_machines = 2
    
    lm0 = shareboost.get_machine(0)
    p0 = lm0.m_parameters
    
    # The following method does not exist
    p0.get_parameter(0)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Viktor    7 年前

    在使用C++ API的情况下,可以得到如下的权重向量:

    auto lm = (CLinearMachine*)shareboost->get_machine(0);
    lm->get_w();
    

    由于您目前使用的是python api,因此只有在使用shogun的新api(仅在development branch atm中可用)时,这才有可能:

    lm0 = shareboost.get_machine(0)
    weights = lm0.get_real_vector("w")
    

    有关如何使用新api的更多示例: http://shogun.ml/examples/nightly/examples/binary/linear_support_vector_machine.html

    推荐文章