2012-04-27 89 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] 

顺便说一句,你省略步骤,其中,实际上是在数据集中填充数据。