我已经在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)
正如预期的那样,我得到“输出”的数值,但有没有办法直接确定预测的类标签?即使没有,我怎样才能将“输出”的值映射到我的类标签?谢谢你的帮助。
答案 0 :(得分:4)
当你说你得到“输出”的数值时,你的意思是标量(也就是说,不是数组)?根据我对它的理解,你应该得到一个包含四个值的数组(即尽可能多的输出类)。该数组中的最大值对应于类的索引。我不知道PyBrain是否提供了一个实用函数来提取它,但你可以这样做:
class_index = max(xrange(len(output)), key=output.__getitem__)
class_name = classes[class_index]
顺便提一下,您省略了实际填充数据集中数据的步骤。