4

我已经在 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)


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

4

1 回答 1

4

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

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

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

于 2012-04-28T23:35:22.483 回答