2012-04-27 81 views
4

我已經在PyBrain上訓練了一個用於分類目的的網絡,並且準備用特定的輸入消失。然而,當我做PyBrain如何解釋net.activate的結果?

 


classes = ['apple', 'orange', 'peach', 'banana'] 

data = ClassificationDataSet(len(input), 1, nb_classes=len(classes), class_labels=classes) 

data._convertToOneOfMany()     # recommended by PyBrain 

fnn = buildNetwork(data.indim, 5, data.outdim, outclass=SoftmaxLayer) 

trainer = BackpropTrainer(fnn, dataset=data, momentum=m, verbose=True, weightdecay=wd) 

trainer.trainUntilConvergence(maxEpochs=80) 

# stop training and start using my trained network here 

output = fnn.activate(input) 

 

正如預期的那樣,我得到「產出」的數值,但有沒有辦法直接確定預測類標籤?即使沒有一個,我如何將「輸出」的值映射到我的類標籤?感謝您的幫助。

回答

4

當你說你得到一個「輸出」的數值你的意思是一個標量(也就是說,不是一個數組)?根據我對它的理解,你應該得到一個包含四個值的數組(即儘可能多的輸出類)。該數組中最大的值對應於該類的索引。我不知道,如果PyBrain提供了一個效用函數來提取,但你可以做這樣的:

class_index = max(xrange(len(output)), key=output.__getitem__) 
class_name = classes[class_index] 

順便說一句,你省略步驟,其中,實際上是在數據集中填充數據。