5

ネットワークをトレーニングしてから、テスト データを 1 つずつフィードする必要があります。それを含む例やドキュメントはありますか?

それを達成するために、訓練されたネットワークをシリアライズし、それをすべての新しい着信エントリで使用します。問題は、クラッシュが発生したこと_convertToOneOfManyと、その目的を理解していても(ここから)、それがどのように機能するのか正確に理解していないことです。

その動作は私にとって決定論的ではありません。クラスとラベルを何らかの形で解釈する必要があり、欠けている要件がいくつかあるはずです。データセット全体で機能しますが、ランダムな行だけを取得すると、おかしくなります。

Traceback (most recent call last):
File "ffn_iris.py", line 29, in <module>
tstdata._convertToOneOfMany()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PyBrain-0.3-py2.6.egg/pybrain/datasets/classification.py", line 142, in _convertToOneOfMany
newtarg[i, int(oldtarg[i])] = bounds[1]
IndexError: index (2) out of range (0<=index<1) in dimension 1

編集: より正確に言うと、私が何をしているのか教えてください: インターネットで最も有名な NN の例のためにネットワークをトレーニングしたい ;) - アイリス データセット。

それはそのようなものです:

5.1,3.5,1.4,0.2,0
4.9,3.0,1.4,0.2,0
4.7,3.2,1.3,0.2,0
4.6,3.1,1.5,0.2,0
etc...

最後のゼロはクラスです。データセット全体が 60 行を保持します。0 の場合は 20、1 の場合は 20、2 の場合は 20。

データを含むファイルを読み取り、データセットを構築します。

alldata = ClassificationDataSet(4, class_labels=['Iris-setosa', 
                                                 'Iris-versicolor',
                                                 'Iris-virginica'])

--- loop here ---

alldata.addSample(line[0:4], line[4])


--- create testing and training sets ---
tstdata, trndata = alldata.splitWithProportion(0.7)


--- converted matrixes ---
trndata._convertToOneOfMany()
tstdata._convertToOneOfMany()

--- not important, just for completeness ----
fnn = buildNetwork(trndata.indim, 10, trndata.outdim, outclass=SoftmaxLayer)
trainer = BackpropTrainer(fnn, dataset=trndata,
                          momentum=0.01, verbose=True,
                          weightdecay=0.01)

私の問題はに関連してい_convertToOneOfMany()ます。データセットまたはデータファイルにいくつかのエントリ (60 ではなく、3 つのクラスに分割されたもの) しか保持されていない場合、質問の最初から例外でクラッシュします。

データセットのクラッシュの例:

 6.5,3.0,5.2,2.0,1
 6.5,3.0,5.2,2.0,1
 6.2,3.4,5.4,2.3,2
 6.5,3.0,5.2,2.0,0

作業例:

 6.5,3.0,5.2,2.0,1
 6.2,3.4,5.4,2.3,2
 6.5,3.0,5.2,2.0,0

convertToOneOfMany()データセット内のエントリ数または 1 つのクラス サブセットのサイズにどのように関連付けることができますか? 1行のエントリもクラッシュします..

4

1 に答える 1

0

コードをもっと貼り付けると良いかもしれません。あなたの質問に関しては、彼らのドキュメントにあります: http://pybrain.org/docs/quickstart/network.html 基本的にはこのコマンドです: net.activate([2, 1]) この場合、ネットワークには2つの入力があり、彼/彼女は値 2 と 1 を入力します。ドキュメントを参照することをお勧めします

于 2011-12-03T11:29:54.550 に答える