調用Nndl實現的神經網絡code,用ANN擬合二次方程。
ref: https://github.com/mnielsen/neural-networks-and-deep-learning
准備訓練數據
#np.shape(x)
x=np.array(xrange(0,100))/100.0
f=x*x
# train=np.array([[xi],[fi]] for xi,fi in zip(x,f))
train=[(np.array([a[0]]).reshape(1,1),np.array([a[1]]).reshape(1,1)) for a in zip(x,f)]
x1=np.array(xrange(10,15))
f1=x1*x1
# train=np.array([[xi],[fi]] for xi,fi in zip(x,f))
test=[(np.array([a[0]]).reshape(1,1),np.array([a[1]]).reshape(1,1)) for a in zip(x1,f1)]
訓練網絡
net2 = network2.Network([1, 5, 1], cost=network2.QuadraticCost)
net2.large_weight_initializer()
err=net2.SGD(train, 30, 5, 1.5, evaluation_data=train, monitor_training_cost=True )
plt.plot(err[2])```
網絡精度
比較擬合函數
a=[]
f=[]
for xi in np.array(xrange(0,100))/100.0:
a.append(net2.feedforward(np.array([xi]).reshape((1,1)))[0])
f.append(xi*xi)
plt.plot(a)
plt.plot(f)