Elman Recurrent network (newelm) — NeuroLab 0.3.4 documentation

### Navigation

- index
- next |
- previous |
- NeuroLab 0.3.4 documentation »
- Examples »

# Elman Recurrent network (newelm)

Use `neurolab.net.newelm()`

    # -*- coding: utf-8 -*-
    """
    Example of use Elman recurrent network
    =====================================

    Task: Detect the amplitudes

    """

    import neurolab as nl
    import numpy as np

    # Create train samples
    i1 = np.sin(np.arange(0, 20))
    i2 = np.sin(np.arange(0, 20)) * 2

    t1 = np.ones([1, 20])
    t2 = np.ones([1, 20]) * 2

    input = np.array([i1, i2, i1, i2]).reshape(20 * 4, 1)
    target = np.array([t1, t2, t1, t2]).reshape(20 * 4, 1)

    # Create network with 2 layers
    net = nl.net.newelm([[-2, 2]], [10, 1], [nl.trans.TanSig(), nl.trans.PureLin()])
    # Set initialized functions and init
    net.layers[0].initf = nl.init.InitRand([-0.1, 0.1], 'wb')
    net.layers[1].initf= nl.init.InitRand([-0.1, 0.1], 'wb')
    net.init()
    # Train network
    error = net.train(input, target, epochs=500, show=100, goal=0.01)
    # Simulate network
    output = net.sim(input)

    # Plot result
    import pylab as pl
    pl.subplot(211)
    pl.plot(error)
    pl.xlabel('Epoch number')
    pl.ylabel('Train error (default MSE)')

    pl.subplot(212)
    pl.plot(target.reshape(80))
    pl.plot(output.reshape(80))
    pl.legend(['train target', 'net output'])
    pl.show()

Result: |

### Navigation

- index
- next |
- previous |
- NeuroLab 0.3.4 documentation »
- Examples »