29

シーケンスの次の値を予測するために、(pybrain) python で再帰型ニューラル ネットワークの実用的な例を教えてもらえますか? (私は pybrain のドキュメントを読みましたが、明確な例はないと思います。) また、この質問も見つかりました。しかし、より一般的なケースでそれがどのように機能するかはわかりません。したがって、リカレント ニューラル ネットワークを使用して、pybrain のシーケンスの次の値を予測する方法の明確な例を誰かがここで解決できるかどうかを尋ねています。

例を挙げると。

たとえば、[1,7] の範囲の数列があるとします。

First run (So first example): 1 2 4 6 2 3 4 5 1 3 5 6 7 1 4 7 1 2 3 5 6

Second run (So second example): 1 2 5 6 2 4 4 5 1 2 5 6 7 1 4 6 1 2 3 3 6

Third run (So third example): 1 3 5 7 2 4 6 7 1 3 5 6 7 1 4 6 1 2 2 3 7

and so on.

たとえば、新しいシーケンスの開始が与えられた場合: 1 3 5 7 2 4 6 7 1 3

次の値は何ですか

この質問は怠惰に思えるかもしれませんが、pybrain でこれを行う方法の適切で適切な例が不足していると思います。


さらに:複数の機能が存在する場合、これを行うにはどうすればよいですか:

例:

たとえば、[1,7] の範囲に複数のシーケンス (各シーケンスに 2 つの特徴がある) があるとします。

First run (So first example): feature1: 1 2 4 6 2 3 4 5 1 3 5 6 7 1 4 7 1 2 3 5 6
                              feature2: 1 3 5 7 2 4 6 7 1 3 5 6 7 1 4 6 1 2 2 3 7


Second run (So second example): feature1: 1 2 5 6 2 4 4 5 1 2 5 6 7 1 4 6 1 2 3 3 6
                                feature2: 1 2 3 7 2 3 4 6 2 3 5 6 7 2 4 7 1 3 3 5 6    

Third run (So third example): feature1: 1 3 5 7 2 4 6 7 1 3 5 6 7 1 4 6 1 2 2 3 7
                              feature2: 1 2 4 6 2 3 4 5 1 3 5 6 7 1 4 7 1 2 3 5 6

and so on.

たとえば、新しいシーケンスの開始が与えられます。

                                            feature 1: 1 3 5 7 2 4 6 7 1 3

                                            feature 2: 1 2 3 7 2 3 4 6 2 4

次の値は何ですか


これらの例に似ていて、詳細な説明がある限り、独自の例を自由に使用してください。

4

2 に答える 2

4

これらの手順は、質問の最初の部分で求めていることを実行するためのものです。

1) 引数にサンプルとターゲットを期待する教師ありデータセットを作成します。

 ds = SupervisedDataSet(21, 21)
 #add samples (this can be done automatically)
 ds.addSample(map(int,'1 2 4 6 2 3 4 5 1 3 5 6 7 1 4 7 1 2 3 5 6'.split()),map(int,'1 2 5 6 2 4 4 5 1 2 5 6 7 1 4 6 1 2 3 3 6'.split()))
 ds.addSample(map(int,'1 2 5 6 2 4 4 5 1 2 5 6 7 1 4 6 1 2 3 3 6'.split()),map(int,'1 3 5 7 2 4 6 7 1 3 5 6 7 1 4 6 1 2 2 3 7'.split()))

y後続のサンプルは、その前のサンプルのターゲットまたはラベルですx21各サンプルには21番号または機能があるため、番号を付けます。

質問の後半の標準的な表記法については、feature1 と feature2 をシーケンスの sample1 と sample2 として呼び出し、features にサンプルの番号を示すようにする方がよいことに注意してください。

2) ネットワークを作成し、トレーナーを初期化し、100 エポック実行します。

net = buildNetwork(21, 20, 21, outclass=LinearLayer,bias=True, recurrent=True)
trainer = BackpropTrainer(net, ds)
trainer.trainEpochs(100)

recurrent引数を次のように設定してください。True

3) テストデータを作成する

ts = UnsupervisedDataSet(21, 21)
#add the sample to be predicted
ts.addSample(map(int,'1 3 5 7 2 4 6 7 1 3 5 6 7 1 4 6 1 2 2 3 7'.split()))

ラベルやターゲットがないと仮定して、教師なしデータセットを作成しました。

4) トレーニング済みネットワークを使用してテスト サンプルを予測する

net.activateOnDataset(ts)

これにより、期待される の値が表示されfourth runます。

シーケンスが複数のサンプルを持つことができる 2 番目のケースでは、教師ありデータセットを作成する代わりに、順次データセットを作成しますds = SequentialDataSet(21,21)。次に、新しいシーケンスを取得するたびに、ds.newSequence()を使用してそのシーケンスでサンプル (機能と呼ぶもの) を呼び出して追加しますds.addSample()

これが明確であることを願っています:)

ライブラリをインポートする手間を省くための完全なコードが必要な場合は、お知らせください。

于 2013-09-07T12:03:46.430 に答える