PyBrain, как интерпретировать результаты net.activate?

Я обучил сеть на 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)


Как и ожидалось, я получаю числовое значение для «вывода», но есть ли способ напрямую определить метку прогнозируемого класса? Даже если его нет, как я могу сопоставить значение «выход» с меткой моего класса? Спасибо за помощь.


person user1330974    schedule 27.04.2012    source источник


Ответы (1)


Когда вы говорите, что получаете числовое значение для «вывода», вы имеете в виду скаляр (то есть не массив)? Насколько я понимаю, вы должны были получить массив из четырех значений (т. е. как можно больше выходных классов, которые у вас есть). Самое большое значение в этом массиве соответствует индексу класса. Я не знаю, предоставляет ли PyBrain служебную функцию для извлечения этого, но вы можете сделать это следующим образом:

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

Кстати, вы пропустили шаг, на котором вы фактически вводите данные в набор данных.

person Estevo    schedule 28.04.2012