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

「出力」の数値を取得すると言うとき、スカラー (つまり、配列ではない) を意味しますか? 私の理解では、4 つの値の配列 (つまり、可能な限り多くの出力クラス) を取得する必要があります。その配列の最大値は、クラスのインデックスに対応します。PyBrain がそれを抽出するためのユーティリティ関数を提供しているかどうかはわかりませんが、次のように実行できます。

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

ちなみに、データセットに実際にデータを入力する手順は省略しました。

于 2012-04-28T23:35:22.483 に答える