Shark源码分析(二):模型与训练方法

Shark源码分析(二):模型与训练方法

之前两篇博客都说的是整个架构底层的东西,如何来存放输入的数据,以便于在计算时进行加速。而这一篇呢,会向上走一点,来看一看如何将模型进行抽象。

在『统计机器学习』中有提到这样一句话,『统计学习方法是由模型、策略和算法构成的』。Shark正是按照这种划分来构建整个库的架构。在监督学习过程中,模型就是所要学习的条件概率分布或是决策函数。Shark是将几个比较类似的算法,例如LinearRegression, LassoRegression,将其中的共同点抽象出来,例如权值向量和偏置,形成一个共同的模型,LinearModel。

有了模型的假设空间,统计学习接着需要考虑的是按照什么样的准则学习或选择最优模型。统计学习的目标在于从假设空间中选取最优的模型。这实际上就是目标函数的选择。在Shark中也将目标函数单独出来成一个基类为AbstractObjectiveFunction的类系,方便用户自由选择模型所使用的目标函数。

算法是指学习模型的具体计算方法。统计学习基于训练数据集,根据学习策略,从假设空间中选择最优模型,最后考虑用什么样的计算方法求解最优模型。

在此基础之上,将所有模型和训练方法的共同点再抽象出来,形成最高层的基类。接下来,我们就来看一下这两个基类。

AbstractModel类

这是所有模型的基类。这个类的定义在<include/shark/Models/AbstractModel.h>文件中。

template<class InputTypeT, class OutputTypeT>
class AbstractModel : public IParameterizable, public INameable, public ISerializable
{
public:
    typedef InputTypeT InputType;
    typedef OutputTypeT OutputType;
    typedef OutputType result_type;

    typedef typename Batch<InputType>::type BatchInputType;
    typedef typename Batch<OutputType>::type BatchOutputType;

    AbstractModel() { }

    virtual ~AbstractModel() { }

    //这个枚举里存储的信息包括相关参数、input是否存在一阶、二阶导数
    //这些信息应该是用在那些利用到梯度的训练方法中
    //可能就会有人有疑问,训练方法不是已经与模型分开了吗
    //但是模型的目标函数是定义在该类中的,稍后会有介绍
    enum Feature {
        HAS_FIRST_PARAMETER_DERIVATIVE  = 1,
        HAS_SECOND_PARAMETER_DERIVATIVE = 2,
        HAS_FIRST_INPUT_DERIVATIVE      = 4,
        HAS_SECOND_INPUT_DERIVATIVE     = 8,
        IS_SEQUENTIAL = 16
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wireshark源码 安装步骤和方法,供大家参考。 安装编译工具:   $sudo apt-get install build-essential   为了成功编译Wireshark,您需要安装GTK+的开发文件和GLib库(libraries)。   $sudo apt-get install libgtk2.0-dev libglib2.0-dev   安装Checkinstall以便管理您系统中直接由源代码编译安装的软件。   $sudo apt-get install checkinstall 下载后的文件名:wireshark-1.2.2.tar.bz2 cd到文件目录解压:$tar -xvf wireshark-1.2.2.tar.bz2 $cd wireshark-1.2.2 编译安装命令如下: $./configure $make $sudo make install 其中make编译时间会比较长,这样下来就基本安装了。 下面是我这篇文章的关键,也是用ubuntu安装的过程中极有可能遇到的问题,且都是在进行./configure编译过程中出现,两个问题如下: 问题1: configure: error: I couldn't find yacc (or bison or ...); make sure it's installed and in your path 解决办法: sudo apt-get install flex bison yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。 问题2: configure: error: Header file pcap.h not found; if you installed libpcap from source, did you also do "make install-incl", and if you installed a binary package of libpcap, is there also a developer's package of libpcap, and did you also install that package? 问题原因是ubuntu下缺少pcap.h等文件。 解决方法: 编译安装libpcap. 在www.tcpdump.org页面中可下载源码:libpcap-1.0.0.tar.gz cd到文件目录: view plaincopy to clipboardprint? $tar -xvf libpcap-1.0.0.tar.gz $cd libpcap-1.0.0.tar.gz $./configure $make $sudo make install $tar -xvf libpcap-1.0.0.tar.gz $cd libpcap-1.0.0.tar.gz $./configure $make $sudo make install

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值