2012-09-15 16 views
7

Tôi cảm thấy điều này không đáng kể, nhưng tôi đã cố gắng tìm mọi thứ hữu ích trong tài liệu PyBrain, tại đây hoặc ở nơi khác.giá trị kích hoạt cho tất cả các nút trong mạng PyBrain

Vấn đề là thế này:

Tôi có một ba lớp (đầu vào, ẩn, đầu ra) mạng feedforward xây dựng và đào tạo về PyBrain. Mỗi lớp có ba nút. Tôi muốn kích hoạt mạng với các đầu vào mới lạ và lưu trữ các giá trị kích hoạt kết quả của các nút ở lớp ẩn. Theo như tôi có thể nói, net.activate() và net.activateOnDataset() sẽ chỉ trả về các giá trị kích hoạt của các nút lớp đầu ra và là những cách duy nhất để kích hoạt một mạng.

Làm cách nào để có được kích hoạt lớp ẩn của mạng PyBrain?

Tôi không chắc chắn mã ví dụ sẽ giúp nhiều trong trường hợp này, nhưng đây là một số nào (với một tập huấn luyện cắt xuống):

from pybrain.tools.shortcuts import buildNetwork 
from pybrain.datasets import SupervisedDataSet 
from pybrain.supervised.trainers import BackpropTrainer 

net = buildNetwork(3, 3, 3) 

dataSet = SupervisedDataSet(3, 3) 
dataSet.addSample((0, 0, 0), (0, 0, 0)) 
dataSet.addSample((1, 1, 1), (0, 0, 0)) 
dataSet.addSample((1, 0, 0), (1, 0, 0)) 
dataSet.addSample((0, 1, 0), (0, 1, 0)) 
dataSet.addSample((0, 0, 1), (0, 0, 1)) 

trainer = BackpropTrainer(net, dataSet) 
trained = False 
acceptableError = 0.001 

# train until acceptable error reached 
while trained == False : 
    error = trainer.train() 
    if error < acceptableError : 
     trained = True 

result = net.activate([0.5, 0.4, 0.7]) 
print result 

Trong trường hợp này, chức năng mong muốn, có thể in danh sách các giá trị kích hoạt của lớp ẩn.

Trả lời

6

Nó trông như thế này nên làm việc:

net['in'].outputbuffer[net['in'].offset] 
net['hidden0'].outputbuffer[net['hidden0'].offset] 

thuần túy dựa trên xem xét the source code.

+0

Điều này hoạt động hoàn hảo. Cảm ơn rất nhiều. – dylanross

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