2013-04-01 7 views
19

मैंने पाइब्रेन के साथ थोड़ा सा खेला है और समझते हैं कि कस्टम आर्किटेक्चर के साथ तंत्रिका नेटवर्क कैसे उत्पन्न करें और बैकप्रोपैगेशन एल्गोरिदम का उपयोग करके पर्यवेक्षित डेटा सेट पर उन्हें प्रशिक्षित करें।पाइब्रेन ब्लैक-बॉक्स ऑप्टिमाइज़ेशन का उपयोग करके पर्यवेक्षित डेटा सेट पर तंत्रिका नेटवर्क को कैसे प्रशिक्षित किया जाए?

हालांकि मैं अनुकूलन एल्गोरिदम और कार्यों, सीखने वाले एजेंटों और वातावरण की अवधारणाओं से उलझन में हूं।

उदाहरण के लिए: मैं एक तंत्रिका नेटवर्क जैसे कि (1) को पाइब्रेन जेनेटिक एल्गोरिदम (2) का उपयोग करके एक्सओआर डेटासेट को वर्गीकृत करने के लिए कैसे कार्यान्वित करूं?

(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)

(2) pybrain.optimization.GA()

+0

आप केवल एक है जो जानना चाहते हैं नहीं कर रहे हैं। –

उत्तर

20

मैं अंत में यह काम किया !! एक बार जब आप जानते हैं कि यह हमेशा आसान होता है!

अनिवार्य रूप से जीए का पहला तर्क फिटनेस फ़ंक्शन (जिसे दस्तावेज़ों में मूल्यांकनकर्ता कहा जाता है) है, जिसे दूसरे तर्क (एक व्यक्ति जिसे दस्तावेज़ों में मूल्यांकन योग्य कहा जाता है) को अपना एकमात्र तर्क के रूप में लेना चाहिए।

इस उदाहरण में ऊपर स्क्रिप्ट के बाद XOR को

from pybrain.datasets.classification import ClassificationDataSet 
# below line can be replaced with the algorithm of choice e.g. 
# from pybrain.optimization.hillclimber import HillClimber 
from pybrain.optimization.populationbased.ga import GA 
from pybrain.tools.shortcuts import buildNetwork 

# create XOR dataset 
d = ClassificationDataSet(2) 
d.addSample([0., 0.], [0.]) 
d.addSample([0., 1.], [1.]) 
d.addSample([1., 0.], [1.]) 
d.addSample([1., 1.], [0.]) 
d.setField('class', [ [0.],[1.],[1.],[0.]]) 

nn = buildNetwork(2, 3, 1) 
# d.evaluateModuleMSE takes nn as its first and only argument 
ga = GA(d.evaluateModuleMSE, nn, minimize=True) 
for i in range(100): 
    nn = ga.learn(0)[0] 

टेस्ट परिणाम को प्रशिक्षित करेंगे:

In [68]: nn.activate([0,0]) 
Out[68]: array([-0.07944574]) 

In [69]: nn.activate([1,0]) 
Out[69]: array([ 0.97635635]) 

In [70]: nn.activate([0,1]) 
Out[70]: array([ 1.0216745]) 

In [71]: nn.activate([1,1]) 
Out[71]: array([ 0.03604205]) 
+0

जीए यहाँ क्या करता है? ज़ोर सरल बैकप्रॉप सीखने के साथ सुलभ होने के लिए जाना जाता है। –

+0

एक्सओआर सिर्फ नमूना डेटासेट है। मैंने इसका इस्तेमाल किया क्योंकि यह अच्छी तरह से जाना जाता है, छोटा और सरल। समस्या के आधार पर जीए और बीपी अलग-अलग प्रदर्शन करते हैं। जीएएस भी अच्छे हैं क्योंकि उन्हें तंत्रिका नेट के साथ संयोजन में उपयोग करने की आवश्यकता नहीं है। –

+2

मैंने आपका कोड निष्पादित किया, लेकिन यह XOR वर्गीकृत करने में सफल नहीं हुआ ... – SomethingSomething

संबंधित मुद्दे