मैं pyBrain पर सबसे सरल प्रतिगमन करने की कोशिश कर रहा हूं लेकिन किसी भी तरह से मैं असफल रहा हूं।सरल रिग्रेशन उदाहरण pyBrain
तंत्रिका नेटवर्क समारोह वाई सीखना चाहिए = 3 * एक्स
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.datasets import SupervisedDataSet
from pybrain.structure import FullConnection, FeedForwardNetwork, TanhLayer, LinearLayer, BiasUnit
import matplotlib.pyplot as plt
from numpy import *
n = FeedForwardNetwork()
n.addInputModule(LinearLayer(1, name = 'in'))
n.addInputModule(BiasUnit(name = 'bias'))
n.addModule(TanhLayer(1,name = 'tan'))
n.addOutputModule(LinearLayer(1, name = 'out'))
n.addConnection(FullConnection(n['bias'], n['tan']))
n.addConnection(FullConnection(n['in'], n['tan']))
n.addConnection(FullConnection(n['tan'], n['out']))
n.sortModules()
# initialize the backprop trainer and train
t = BackpropTrainer(n, learningrate = 0.1, momentum = 0.0, verbose = True)
#DATASET
DS = SupervisedDataSet(1, 1)
X = random.rand(100,1)*100
Y = X*3+random.rand(100,1)*5
for r in xrange(X.shape[0]):
DS.appendLinked((X[r]),(Y[r]))
t.trainOnDataset(DS, 200)
plt.plot(X,Y,'.b')
X=[[i] for i in arange(0,100,0.1)]
Y=map(n.activate,X)
plt.plot(X,Y,'-g')
यह कुछ भी जानने नहीं है। मैंने छिपी परत को हटाने की कोशिश की है (क्योंकि इस उदाहरण में हमें इसकी आवश्यकता भी नहीं है) और नेटवर्क ने नाएन की भविष्यवाणी करना शुरू कर दिया। क्या चल रहा है?
संपादित करें: इस कोड है कि मेरी समस्या हल है:
#DATASET
DS = SupervisedDataSet(1, 1)
X = random.rand(100,1)*100
Y = X*3+random.rand(100,1)*5
maxy = float(max(Y))
maxx = 100.0
for r in xrange(X.shape[0]):
DS.appendLinked((X[r]/maxx),(Y[r]/maxy))
t.trainOnDataset(DS, 200)
plt.plot(X,Y,'.b')
X=[[i] for i in arange(0,100,0.1)]
Y=map(lambda x: n.activate(array(x)/maxx)*maxy,X)
plt.plot(X,Y,'-g')
मुझे इनपुट को अधिकतम (100) से विभाजित करना पड़ा। जब मैं 1 से नीचे और 0 से ऊपर न्यूरॉन्स आउटपुट मानों को प्रशिक्षण शुरू करता हूं .. मुझे समझ में नहीं आता कि यह कैसे काम करता है .. –
मैंने यह जांचने के लिए पाइब्रेन के आंतरिक में प्रवेश नहीं किया है, लेकिन यह किसी भी घटना में अच्छा है आपके इनपुट को स्केल करने के लिए सामान्य अभ्यास, ताकि जब आपके पास एकाधिक इनपुट हों (जो, आपको दिया गया है, तो आपके पास यहां नहीं है, लेकिन अन्य मामलों में आप करेंगे) वे इसके बारे में भारित शुरू करते हैं। – rossdavidh