2018-05-30 C++& lasagne

2018-05-30  本文已影响0人  逃淘桃

C++

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


Lasagne

lasagne简单入门

1.简介

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

2.建立模型

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

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)
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)

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

上一篇 下一篇

猜你喜欢

热点阅读