2011-11-29 45 views
5

Tôi cần đào tạo mạng và sau đó cấp dữ liệu với từng dữ liệu kiểm tra. Có một số ví dụ hoặc tài liệu bao gồm nó?làm thế nào để nuôi fbn pybrain với một mục (cho mạng đã được đào tạo)?

Để đạt được điều đó, tôi đã nối tiếp mạng được đào tạo và tôi sử dụng nó với mọi mục nhập mới đến. Vấn đề là, tôi gặp sự cố từ _convertToOneOfMany và thậm chí tho tôi hiểu mục đích của nó (từ here) Tôi không hiểu nó hoạt động như thế nào.

Hành vi của nó không mang tính quyết định đối với tôi. Nó phải giải thích bằng cách nào đó các lớp học và nhãn hiệu và phải có một số yêu cầu tôi đang mất tích. Nó hoạt động cho toàn bộ tập dữ liệu, tuy nhiên nếu tôi chỉ lấy một dòng ngẫu nhiên thì nó sẽ phát điên.

Traceback (most recent call last): 
File "ffn_iris.py", line 29, in <module> 
tstdata._convertToOneOfMany() 
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PyBrain-0.3-py2.6.egg/pybrain/datasets/classification.py", line 142, in _convertToOneOfMany 
newtarg[i, int(oldtarg[i])] = bounds[1] 
IndexError: index (2) out of range (0<=index<1) in dimension 1 

EDIT: được chính xác hơn cho tôi cho bạn biết những gì tôi đang làm: Tôi muốn đào tạo mạng cho ví dụ NN nổi tiếng nhất trên Internet;) - Iris Dataset.

Nó là một cái gì đó như thế:

5.1,3.5,1.4,0.2,0 
4.9,3.0,1.4,0.2,0 
4.7,3.2,1.3,0.2,0 
4.6,3.1,1.5,0.2,0 
etc... 

Các zero cuối cùng nó lớp. Toàn bộ tập dữ liệu chứa 60 hàng. 20 0, 20 cho 1 và 20 cho 2.

Tôi đọc các tập tin với dữ liệu và xây dựng bộ dữ liệu:

alldata = ClassificationDataSet(4, class_labels=['Iris-setosa', 
               'Iris-versicolor', 
               'Iris-virginica']) 

--- loop here --- 

alldata.addSample(line[0:4], line[4]) 


--- create testing and training sets --- 
tstdata, trndata = alldata.splitWithProportion(0.7) 


--- converted matrixes --- 
trndata._convertToOneOfMany() 
tstdata._convertToOneOfMany() 

--- not important, just for completeness ---- 
fnn = buildNetwork(trndata.indim, 10, trndata.outdim, outclass=SoftmaxLayer) 
trainer = BackpropTrainer(fnn, dataset=trndata, 
          momentum=0.01, verbose=True, 
          weightdecay=0.01) 

Vấn đề của tôi liên quan đến _convertToOneOfMany(). Khi tập dữ liệu hoặc datafile chỉ giữ vài mục (không phải 60, được chia thành ba lớp), nó bị treo với ngoại lệ từ đầu câu hỏi.

Ví dụ về đâm datset:

6.5,3.0,5.2,2.0,1 
6.5,3.0,5.2,2.0,1 
6.2,3.4,5.4,2.3,2 
6.5,3.0,5.2,2.0,0 

Ví dụ về làm việc một:

6.5,3.0,5.2,2.0,1 
6.2,3.4,5.4,2.3,2 
6.5,3.0,5.2,2.0,0 

Làm thế nào có thể convertToOneOfMany() được kết nối với số lượng các mục trong tập dữ liệu hoặc kích thước của một lớp tập hợp con? Một mục nhập cũng bị lỗi ..

Trả lời

0

Có thể tốt nếu bạn dán nhiều mã hơn. Về cơ bản, đó là tài liệu của họ: http://pybrain.org/docs/quickstart/network.html Về cơ bản là lệnh này: net.activate ([2, 1]) trường hợp này mạng có 2 đầu vào và nhập giá trị 2 và 1 Tôi khuyên bạn nên bạn xem qua tài liệu của họ

+1

Tôi đã mở rộng câu hỏi - bạn có thể xem qua không? Cảm ơn! Có bất kỳ diễn đàn hoặc danh sách gửi thư nào cho người dùng có kinh nghiệm của PyBrain không? – user425720

Các vấn đề liên quan