J'apprends à utiliser le module cérébral de Gekko pour des applications d'apprentissage en profondeur.
J'ai mis en place un réseau neuronal pour apprendre la fonction numpy.cos () et produire des résultats similaires.
J'obtiens un bon ajustement lorsque les limites de ma formation sont:
x = np.linspace(0,2*np.pi,100)
Mais le modèle s'effondre lorsque j'essaie d'étendre les limites à:
x = np.linspace(0,3*np.pi,100)
Que dois-je changer dans mon réseau de neurones pour augmenter la flexibilité de mon modèle afin qu'il fonctionne pour d'autres limites?
Voici mon code:
from gekko import brain
import numpy as np
import matplotlib.pyplot as plt
#Set up neural network
b = brain.Brain()
b.input_layer(1)
b.layer(linear=2)
b.layer(tanh=2)
b.layer(linear=2)
b.output_layer(1)
#Train neural network
x = np.linspace(0,2*np.pi,100)
y = np.cos(x)
b.learn(x,y)
#Calculate using trained nueral network
xp = np.linspace(-2*np.pi,4*np.pi,100)
yp = b.think(xp)
#Plot results
plt.figure()
plt.plot(x,y,'bo')
plt.plot(xp,yp[0],'r-')
plt.show()
Ce sont des résultats à 2pi:
Ce sont des résultats à 3pi: