import numpy
as np
def ():
"""generate original data of u and y"""
u = np.random.uniform(
-1,
1,
200)
y=[]
former_y_value =
0
for i
in np.arange(
0,
200):
y.append(former_y_value)
next_y_value = (
29 /
40) * np.sin(
(
16 * u[i] +
8 * former_y_value) / (
3 +
4 * (u[i] **
2) +
4 * (former_y_value **
2)))
+ (
2 /
10) * u[i] + (
2 /
10) * former_y_value
former_y_value = next_y_value
return u,y
from pybrain.structure
import *
fnn = FeedForwardNetwork()
inLayer = LinearLayer(
2, name=
'inLayer')
hiddenLayer = SigmoidLayer(
10, name=
'hiddenLayer0')
outLayer = LinearLayer(
1, name=
'outLayer')
fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)
fnn.sortModules()
from pybrain.supervised.trainers
import BackpropTrainer
from pybrain.datasets
import SupervisedDataSet
DS = SupervisedDataSet(
2,
1)
u,y = generate_data()
for i
in np.arange(
199):
DS.addSample([u[i], y[i]], [y[i+
1]])
X = DS[
'input']
Y = DS[
'target']
dataTrain, dataTest = DS.splitWithProportion(
0.8)
xTrain, yTrain = dataTrain[
'input'], dataTrain[
'target']
xTest, yTest = dataTest[
'input'], dataTest[
'target']
from pybrain.supervised.trainers
import BackpropTrainer
trainer = BackpropTrainer(fnn, dataTrain, verbose =
False, learningrate=
0.01)
trainer.trainUntilConvergence(maxEpochs=
1000)
import matplotlib.pyplot
as plt
predict_resutl=[]
for i
in np.arange(len(xTest)):
predict_resutl.append(fnn.activate(xTest[i])[
0])
print(predict_resutl)
plt.figure()
plt.plot(np.arange(
0,len(xTest)), predict_resutl,
'ro--', label=
'predict number')
plt.plot(np.arange(
0,len(xTest)), yTest,
'ko-', label=
'true number')
plt.legend()
plt.xlabel(
"x")
plt.ylabel(
"y")
plt.show()
for mod
in fnn.modules:
print
"Module:", mod.name
if mod.paramdim >
0:
print
"--parameters:", mod.params
for conn
in fnn.connections[mod]:
print
"-connection to", conn.outmod.name
if conn.paramdim >
0:
print
"- parameters", conn.params
if hasattr(fnn,
"recurrentConns"):
print
"Recurrent connections"
for conn
in fnn.recurrentConns:
print
"-", conn.inmod.name,
" to", conn.outmod.name
if conn.paramdim >
0:
print
"- parameters", conn.params