PyBrain如何解释net.activate的结果?

时间:2012-04-27 10:09:50

标签: neural-network pybrain feed-forward

我已经在PyBrain上训练了一个网络,用于分类,并准备用特定的输入来解雇。但是,当我做的时候



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)


正如预期的那样,我得到“输出”的数值,但有没有办法直接确定预测的类标签?即使没有,我怎样才能将“输出”的值映射到我的类标签?谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

当你说你得到“输出”的数值时,你的意思是标量(也就是说,不是数组)?根据我对它的理解,你应该得到一个包含四个值的数组(即尽可能多的输出类)。该数组中的最大值对应于类的索引。我不知道PyBrain是否提供了一个实用函数来提取它,但你可以这样做:

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

顺便提一下,您省略了实际填充数据集中数据的步骤。