美文网首页
2018-05-30 C++& lasagne

2018-05-30 C++& lasagne

作者: 逃淘桃 | 来源:发表于2018-05-30 21:35 被阅读0次

    C++

    1.C++中string erase函数的使用
    erase函数的原型如下:

    • string & erase(size_t pos = 0, size_t n = npos)
    • iterator erase(iterator position)
    • iterator erase(iterator first, iterator last)
      也就是说有三种用法:
    • erase(pos,n):删除从pos开始的n个字符,比如erase(0, 1)就是删除一个字符;
    • erase(position):删除position处的一个字符(position是个string类型的迭代器)
    • erase(first,last):删除从first到last之间的字符(first和last都是迭代器)

    Lasagne

    lasagne简单入门

    1.简介

    lasagne是一个基于Theano的轻量级的神经网络库,其实就是对Theano库的上层封装,使用起来更加简单,但是相应的灵活性下降。

    2.建立模型

    和所有的框架一样,非常重要的一个环节就是进行网络模型的定义。lasagne的网络模型建立方法和Torch比较相似,都是对各种常用网络层(layer)进行封装,我们只需要调用相应的网络层函数并把它们搭接在一起就可以了。

    • 以多层感知机模型为例
      多层感知机(Multi-layer-perceptron,MLP),此处构建一个两个隐藏层的多层感知机,并对输入增加20%的dropout,隐藏层增加50%的dropout。实际上我们的网络模型就由输入层+两个隐藏层+输出层组成,只需要对其分别进行定义即可。
    • 输入层
      输入层采用InputLayer进行定义,'InputLayer'只用于接受数据,不对数据做任何的处理,类似于TensorFlow里面的placeholder功能,定义方法如下:
    l_in = lasagne.layers.InputLayer(shape=(None, 1, 28, 28), input_var=input_var)
    

    shape里对应的四个参数分别表示:(batchsize, channels, rows, columns),input_var表示需要连接到网络输入层的theano变量,默认为none
    然后对输入数据加以20%的dropout,采用DropoutLayer进行定义:

    l_in_drop = lasagne.layer.DropoutLayer(l_in, p=0.2)
    
    • 隐藏层
      这里的隐藏层由全连接层、激活层、dropout层组成。lasagne将全连接层和激活层封装到一个函数里了,即DenseLayer,定义如下:
    l_hid1 = lasagne.layers.DenseLayer(l_in_drop, 
                                      num_units=800,
                                      nonlinearity=lasagne.nonlinearities.rectify,
                                      W=lasagne.init.GlorotUniform())
    

    num_units表示全连接层的单元数目,nonlinearity用以定义激活层函数,激活层函数封装在lasagne.nonlinearities中,这里选择的ReLU函数,而网络参数的初始化封装在lasagne.init里,只需要分别进行调用就可以了。
    之后再添加50%的dropout:

    l_hid1_drop = lasagne.layers.DropoutLayer(l_hid1, p=0.5)
    

    第二个隐藏层的定义与此类似
    输出层
    输出层依旧是一个全连接网络,只是不同的是这里是做分类任务,所以需要将非线性函数/激活函数修改为softmax,如下:

    l_out = lasagne.layers.DenseLayer(
                                     l_hid2_drop, num_units=10,
                                     nonlinearity=lasagne.nonlinearities.softmax)
    

    这样就得到了一个包含两个隐藏层的多层感知机了。

    相关文章

      网友评论

          本文标题:2018-05-30 C++& lasagne

          本文链接:https://www.haomeiwen.com/subject/rznxsftx.html