問題タブ [pybrain]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
18683 参照

python - PyBrain を使用したニューラル ネットワークのトレーニングが収束しない

PyBrain チュートリアルの次のコードがあります。

ただし、結果として、十分にトレーニングされていないニューラル ネットワークが作成されます。エラー出力を見ると、ネットワークは適切にトレーニングされていますが、「continueEpochs」引数を使用してさらにトレーニングを行っているため、ネットワークのパフォーマンスが再び低下しています。したがって、ネットワークは収束していますが、最適なトレーニング済みネットワークを取得する方法はありません。PyBrain のドキュメントは、最適にトレーニングされたネットワークが返されることを暗示していますが、エラーのタプルを返します。

continueEpochs を 0 に設定するとエラー (ValueError: max() arg は空のシーケンス) が発生するため、continueEpochs は 0 よりも大きくする必要があります。

ドキュメントとコードに大きな違いがあるように見えるため、PyBrain は実際に維持されていますか。

0 投票する
0 に答える
696 参照

python - ユニコードを出力として取得するように画像をトレーニングするニューラルネットワーク-python

キャラクターのイメージがあります。ピクセルの線形配列を入力として受け取り、文字のUnicodeを生成して、その文字の実際のUnicodeと比較できるように、ニューラルネットワークを作成したかったのです。pybrainを使って試しましたが、Unicodeを生成できるコードを書くことができませんでした。これらは私がニューラルネットワークに使用するパラメータです:

•学習率=150

•シグモイド勾配=0.026

•体重バイアス=30

•エポック数=300(最大)

•平均エラーしきい値=0.0002

私は次のアルゴを考えています:

  1. 指定されたトポロジパラメータに従ってネットワークを形成します
  2. 指定された±重みバイアス値内のランダムな値で重みを初期化します。[7]
  3. トレーナーセットファイルのロード(入力画像と目的の出力テキストの両方)
  4. 入力画像を分析し、検出されたすべてのシンボルを線形配列にマッピングします
  5. ファイルから目的の出力テキストを読み取り、各文字をバイナリUnicode値に変換して個別に保存します
  6. 各キャラクターについて:a。フィードフォワードネットワークの出力を計算しますb。シンボルに対応する目的の出力と比較し、エラーを計算しますc。重みを調整するために、各リンク間でエラーを逆伝播します
  7. 次のキャラクターに移動し、すべてのキャラクターが訪問されるまで手順6を繰り返します
  8. すべての文字の平均誤差を計算する
  9. 指定されたエポック数になるまで、手順6と8を繰り返します。エラーしきい値に達しましたか?その場合、反復を中止しますb。反復を続行しない場合

手順6でニューラルネットワークからの出力としてUnicodeを生成できません。助けてください

0 投票する
1 に答える
2281 参照

python - PyBrainネットワーク内のすべてのノードのアクティベーション値

これは些細なことだと思いますが、PyBrainのドキュメント、ここ、または他の場所で役立つものを見つけるのに苦労しました。

問題はこれです:

PyBrainで構築およびトレーニングされた3層(入力、非表示、出力)フィードフォワードネットワークがあります。各レイヤーには3つのノードがあります。新しい入力でネットワークをアクティブ化し、結果として得られたノードのアクティブ化値を隠れ層に保存したいと思います。私の知る限り、net.activate()とnet.activateOnDataset()は、出力レイヤーノードのアクティブ化値のみを返し、ネットワークをアクティブ化する唯一の方法です。

PyBrainネットワークの隠れ層のアクティベーションを取得するにはどうすればよいですか?

この場合、サンプルコードがそれほど役立つかどうかはわかりませんが、とにかくここにいくつかあります(カットダウントレーニングセットを使用):

この場合、必要な機能は、非表示レイヤーのアクティブ化値のリストを印刷することです。

0 投票する
1 に答える
556 参照

neural-network - Pybrain の単語分類: 入力ベクトル内の異なる数のシーケンス

PyBrain を使用して単純な 1 桁の分類子を実装しようとしています。0 から 9 までの数字の記録された多くの例のトレーニング データがあり、各例の MFCC を抽出するスクリプトを作成しました。簡単にするために (今のところ) 13 個の係数のみを計算し、10ms ごとに 1 回オーディオ ファイルをサンプリングしています。記録されたトレーニング例はそれぞれ持続時間が異なるため、たとえば、すべて「ゼロ」のセットのサンプル数は、音声の長さに応じてそれぞれ変化します。したがって、「ゼロ」のいくつかの例では、形状 (67,13) の MFCC トレーニング ベクトルがありますが、他の例では (44, 13) になる可能性があります。

問題は、PyBrain でデータセットを作成する場合、入力ベクトルの次元が均一である必要があり、列と同じ数の行が含まれている必要があることです。

入力ベクトルが設定された列数(13 個の MFCC)を持つようにデータセットを定義する方法はありますか? それとも私はこれを完全に間違っていますか?

オンラインとスタックオーバーフローで検索して検索しましたが、答えがわかりません。チュートリアルの Pybrain の例に従って、実装することができます。

0 投票する
1 に答える
4694 参照

machine-learning - 隠れ層の数、隠れ層のユニット、およびニューラルネットワークがトレーニングデータで許容可能な動作を開始するまでのエポック

私はニューラルネットワークを使用してこのKaggle問題を解決しようとしています。PybrainPythonライブラリを使用しています。

これは、古典的な教師あり学習の問題です。次のコードでは、「data」変数はnumpy array(892 * 8)です。7つのフィールドは私の機能であり、1つのフィールドは「0」または「1」の出力値です。

ニューラルネットワークをトレーニングした後、トレーニングデータでテストしていると、すべての入力に対して常に単一の出力が得られます。好き:

LearningRate、weightDecay、momentum、非表示ユニットの数、非表示レイヤーの数、非表示レイヤーのクラス、出力レイヤーのクラスを変更して解決しようとしましたが、いずれの場合も、入力がトレーニングからのものである場合、すべての入力に対して同じ出力が得られます。データ。

「XOR」用のニューラルネットワークを構築していたとき、ナノスケールでエラーが発生し始めるまでに少なくとも700回の反復が必要だったため、8000回以上実行する必要があると思います。'XOR'のトレーニングデータサイズはわずか4でしたが、この場合は892です。したがって、元のデータの10%(現在のトレーニングデータのサイズは89)で8000回の反復を実行しましたが、それでもすべての入力に対して同じ出力が得られました。トレーニングデータで。また、入力を「0」または「1」に分類したいので、出力層のクラスをSoftmaxとして使用している場合、出力として常に「1」が返されます。

どの構成(隠れユニットの数、出力層のクラス、学習率、隠れ層のクラス、勢い)に関係なく、「XOR」で使用していましたが、いずれの場合も多かれ少なかれ収束し始めました。

最終的にエラー率が低くなる構成がある可能性があります。トレーニングデータのすべての入力に対して同じ出力が得られないように、少なくともいくつかの構成。

80,000回の反復で実行しました(トレーニングデータサイズは89です)。出力サンプル:

平均誤差:0.112558819082

(「最大エラー:」、0.21803000849096299、「中央値エラー:」、0.096632332865968451)

範囲(0.33、0.5)内のすべての出力を提供します。

0 投票する
1 に答える
304 参照

python - 異なるアクティベーションに対して同じ応答を報告するニューラル ネットワーク

この Pybrain ニューラル ネットワークの簡単なテストを作成しましたが、期待どおりに動作しません。アイデアは、素数と非素数のクラスを使用して、最大 4095 の数値のデータセットでトレーニングすることです。

これが可能かどうかの質問を無視して (お願いします)、私の問題は、7、6、および 100 が素数であるかどうかをテストする最後の 3 つの print ステートメントがすべて同じ結果を返すことです。

(または同様のもの) 私がこれらの結果を解釈する方法は、ニューラル ネットワークが 65% の確実性でこれらの数値のそれぞれが素数であると予測するということです。私のニューラル ネットワークはすべての入力を同じように扱うことを学習しましたか、それとも何か間違ったことをしていますか?

0 投票する
1 に答える
756 参照

python - MNIST データを読み取ろうとすると EOFError エラーが発生するのはなぜですか?

このコードを実行しているときに、このエラーが発生していました:

0 投票する
1 に答える
5440 参照

python - pybrainの悪い結果

私は何か間違ったことをしているのか、それとも結果が本当に悪いのか疑問に思っています。ドキュメントに示されている最も単純なNNの例を想定してみましょう。

例えば

予想は0でした。明らかに丸めることができることはわかっていますが、それでも、このような単純な例では、ネットワークがはるかに正確になると思います。ここでは「動作中」と呼ぶことができますが、これは非常に使用できないため、重要な何かが欠落していると思われます...

トレーナーに設定verbose=Trueすると、かなり小さなエラーが表示される可能性があります(合計エラー:0.0532936260399など)

ネットワークのエラーは5%だと思いますが、その後のアクティブ化関数でどのようにオフにすることができますか?

私は明らかにもっと複雑なことにpybrainを使用していますが、同じ問題があります。ネットワークでエラーが0.09程度と表示されていても、テストサンプルの約50%が間違っています。

ヘルプplsはありますか?

0 投票する
1 に答える
2397 参照

python - トレーニングおよびテスト済みの PyBrain ネットワークに入力を与える方法と結果を取得する方法

値を予測しています。2 つの入力レイヤーと出力レイヤーがあります。これは、PyBrain ネットワークをトレーニングしてテストしたコードです。ネットワークに一連の入力を与える方法と結果を取得する方法がありません。前進するために私を助けてください。

入力を与え、入力を予測するために次に何をすべきか、その入力セットの結果を取得するにはどうすればよいですか。ありがとう!!

0 投票する
0 に答える
1614 参照

python - pybrainニューラルネットワークが学習していません

私は pybrain を使用して、走化性 (化学信号に基づいて食物に向かって移動する) を学習するエージェントを構築しています。エージェントは、食品からの距離に基づいて重みを調整するニューラル ネットワークによって表されます。入力は 2 つのセンサー ニューロンであり、出力はエージェントを動かす 2 つの運動ニューロンです。したがって、私は継続的な状態と行動を持っています。報酬は、食べ物からの距離の逆数です。

これが私のメインループの本質です:

私が試したアプローチは次のとおりです。

  • Q を試してみてください (連続した状態/アクションがあるため機能しません)
  • Reinforce/ENAC を使用した実験 (勾配降下は変化を計算しません)
  • Reinforce/ENAC を使用した継続的な実験 (上記参照)
  • HillClimber を使用したエピソード実験 (ネットワークの重みは変化しません)

私の実験には EpisodicExperiment が最も適していると思われるため、EpisodicExperiment を使用することにしました。

ようやくネットワークの重みが変化するのがわかりますが、時間の経過に伴う平均フィットネスは増加しません。私は何が間違っているのでしょうか?

ここに私のすべてのコードの Gist リポジトリがあります: https://gist.github.com/4477624

pybrain のドキュメントは次のとおりです: http://pybrain.org/docs/index.html 学習者のドキュメント (Q、Reinforce、HillClimber など) はhttp://pybrain.org/docs/api/rl/learners.htmlにあります。

コード自体はhttps://github.com/pybrain/pybrainにあります。学習者はhttps://github.com/pybrain/pybrain/tree/master/pybrain/rl/learnersにあり、実験はhttps://github.com/pybrain/pybrain/tree/master/pybrain/rl/にあります実験

ただし、EpisodicExperiment で最適化学習器を使用しています。それらはhttps://github.com/pybrain/pybrain/tree/master/pybrain/optimizationにあります。

そこからドキュメントとコードを通してあなたの道を見つけることができると確信しています。私が扱っている他のすべてはhttps://github.com/pybrain/pybrain/tree/master/pybrain/rlにあります。