NeuroLab - a library of basic nueral networks algorithms with flexible network configurations and learning algorithms. To simplify migration, the syntax of the library is as close to a package of Neural Network Toolbox (NNT) of MATLAB (c). The library is based on the package numpy (http://numpy.scipy.org), some learning algorithms are used scipy.optymyze (http://scipy.org).
Create network: | >>> import neurolab as nl
>>> # create feed forward multilayer perceptron
>>> net = nl.net.newff([[0, 0.5], [0, 0.5]], [3,1])
|
---|
Created two-layer network(3-1) with 2-inputs and one output. Input layer contains 3 neurons, the output 1 neuron. Input range: 0.0, 0.5
Train: | >>> # Create learning samples
>>> input = [[0.1, 0.1],
... [0.1, 0.2],
... [0.1, 0.3],
... [0.1, 0.4],
... [0.2, 0.2],
... [0.2, 0.3],
... [0.2, 0.4],
... [0.3, 0.3],
... [0.3, 0.4],
... [0.4, 0.4]]
>>>
>>> target = [[i[0] + i[1]] for i in input]
>>> # Train
>>> error = net.train(input, target, epochs=500, goal=0.1)
|
---|---|
Train error: | >>> print "Finish error:", error[-1]
Finish error: 0.125232586274
|
Simulate: | >>> net.sim([[0.1, 0.5], [0.3, 0. 1]])
array([[ 0.59650825],
[ 0.41686071]])
|
Network Info: | >>> # Number of network inputs:
>>> net.ci
2
>>> # Number of network outputs:
>>> net.co
1
>>> # Number of network layers:
>>> len(net.layers)
2
>>> # Weight of first neuron of input layer (net.layers[0])
>>> net.layers[0].np['w'][1]
array([-0.67211163, -0.87277918])
>>>
>>> # Bias output layer:
>>> net.layers[-1].np['b']
array([-0.69717423])
>>> # Train params
>>> net.train.defaults
{'goal': 0.01,
'show': 100,
'epochs': 1000,
'lr': 0.01,
'adapt': False,
'errorf': <neurolab.error.SSE instance at 0x03757EB8>}
|
Save/Load: | >>> net.save('sum.net')
>>> newnet = nl.load('sum.net')
|
Change train function: | |
>>> net.trainf = nl.train.TrainCG()
>>> # Change error function:
>>> net.trainf.defaunts['trainf'] = nl.error.SAE()
|
|
Change transfer function on output layer: | |
>>> net.layers[-1].transf = nl.trans.HardLim()
|