問題タブ [backpropagation]
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.
artificial-intelligence - このニューラル ネットワークにはどのアクティベーション関数を使用すればよいですか?
チェッカー ゲーム用のニューラル ネットワークを開発しています。私たちの訓練データでは、
0 は空白セル、1 は白の駒、-1 は白のキング、2 は黒の駒、-2 は黒のキングを表します。
したがって、必要なのは範囲 [-2, 2] 内のアクティベーション関数です。どのアクティベーション関数を使用する必要がありますか? これに関するあなたの提案を教えてください。
python - ニューラル ネットワーク - 出力が 0 に収束している、python
単純な逆伝播とワンホット エンコーディングを使用して、多層ニューラル ネットワークで 2D データを 3 つのクラスに分類しようとしています。増分学習をバッチ学習に変更した後、出力が 0 ( [0,0,0]
) に収束しました。これは、主に、より多くのデータを使用したり、学習速度を上げたりした場合に発生します。何か別のものを派生させる必要があるのか、それともコードにいくつかのバグを作ったのかはわかりません。
python - OpenCV を使用して Python でニューラル ネットワークを実装する際の関数プロトタイプ エラー
Python でニューラル ネットワークを実装しようとしています。これは私たちのコードです:
しかし、エラーが発生しています:
指定されたすべての C++ プロトタイプを試しました。しかし、まだエラーがあります。
実際に、C++ で動作するニューラル ネットワークの実装を Python に移植しようとしています。問題は、ニューラル ネットワークのトレーニングに使用される train 関数にあります。
これは C++ ソース コードです: neuro.cpp
これに対する解決策はありますか?または、Pythonで使用する関数のプロトタイプまたは名前が異なる場合は、ご協力ください。
コードは Python v2.6 および OpenCV v2.1 で動作することに注意してください。新しいバージョンは、インポートされたモジュールをサポートしていません。
algorithm - バックプロパゲーションで一度に 2 つの xor 問題をトレーニングできますか?
次のようなデータセットがあるとします。
実際には、y1 = x1 XOR x2、および y2 = not(x1 XOR x2) であり、これはまったく奇妙に思えません。
ウィキペディアで提供されている Python で書かれたコードでは、トレーニング エラーは収束していないようです。
なぜこれが起こるのですか?このデータセットを (2, 2, 2) BP ネットワークでトレーニングする可能性はありませんか? (2, 2, 2) は、入力層のノード番号、中間層のノード番号、および出力層のノード番号がすべて 2 (バイアス ノードを除く) であることを意味します。
それともコードに何か問題がありますか?
cuda - ホスト上で完全に実行され、カーネルに配置されたコードが不可解な理由で失敗する
既存の「ホストのみ」のバックプロパゲーションの実装を CUDA に移植する必要があります。ここではアルゴリズムの性質は問題ではないと思うので、その仕組みについてはあまり説明しません。私が重要だと思うのは、3次元すべてが動的に割り当てられる3次元配列を使用していることです。私はCUDA 5.0でVS2010を使用しています。そして私のデバイスは2.1です。元のホストオンリー コードはここからダウンロードできます → http://files.getwebb.org/view-cre62u4d.html
コードの要点:
- adult.data のパターンは、「pattern.h」にあるデータ構造を使用してメモリにロードされます。
- いくつかの多次元配列が割り当てられます
- 直前に割り当てられた配列を使用して、アルゴリズムがパターンに対して実行されます。
コードを実行したい場合は、kernel.cu の先頭にある PATH 定数を変更することを忘れないでください。また、「2」層、「5」ニューロン、および「0.00001」の学習率を使用することをお勧めします。ご覧のとおり、これは完全に機能します。「MSE」は改善しています。このアルゴリズムが何をしているのかわからない人のために、パターンに存在する 14 の変数に基づいて目標値を予測する方法を学習すると簡単に言っておきましょう。「MSE」が減少します。これは、各「エポック」後にアルゴリズムがミスを減らすことを意味します。
このコードをデバイスで実行するのに非常に長い時間を費やしました。そして、私はまだ成功していません。最後の試みは、配列を初期化してアルゴリズムを実行するコードを大きなカーネルにコピーするだけで行われました。これは再び失敗しました。このコードはそこからダウンロードできます → http://files.getwebb.org/view-cre62u4c.html
正確には、元のホストオンリー コードとの違いは次のとおりです。
- アルゴリズムで使用する f() と fder() は、デバイス 関数になります。
- パラメーターはハードコーディングされています: 2 層、5 ニューロン、学習率 0.00001
- 「w」配列は、rand() ではなく、固定値 (0.5) を使用して初期化されます
- データ構造はデバイスのメモリに割り当てられ、データはホストのメモリ内の adult.data からロードされた後、デバイスのメモリに送信されます
コードをカーネルで実行するために必要な最小限の変更を行ったと思います。「kernel_check_learningData」カーネルは、デバイスのメモリにロードされたパターンに関するいくつかの情報を表示し、ホストからデバイスにパターンを送信する次のコードが機能したことを証明します。
「w」配列を読み取るときに、順方向フェーズの開始時に明らかに失敗します。私はそれについての説明を見つけることができません。
2 つの可能性があります。
- デバイスのメモリにパターンを送信するコードは、適切に動作しているように見えるにもかかわらず、バグがあり、フォワードフェーズを開始するときにさらにバグを引き起こします。
- CUDA API が正常に動作していません!
私は非常に長い間、自分の間違いを必死に探しています。それで、コミュニティが私に助けを提供してくれるのではないかと思いました。
ありがとう。
artificial-intelligence - AForge.NET - バックプロパゲーション学習は常に値 [-1;1] を返します
AForge.NET - Neuro Learning - Backpropagation を使用したバックプロパゲーション学習に問題があります。私は実際にサンプル(近似)のようにニューラルネットワークを実装しようとしています。私の問題はこれについてです: 1. 入力ベクトル {1,2,3,...,19,20} 2. 出力ベクトル {1,2,3,...,19,20} (線形関数です) 3 . ActivationNetwork ネットワーク = 新しい ActivationNetwork(新しい BipolarSigmoidFunction(2), 1, 20, 1); 4. その後、約 1 万回 - teacher.RunEpoch(input, output);
学習が完了すると、network.Compute() が [-1;1] の値を返すのはなぜですか?
サンプルには、ベクトルの値を正規化するようなものがあります( x -> [-1; 1] および y -> [-0.85; 0.85] )。それを行うと、すべて問題ありません...しかし、それは私が望む唯一のサンプルですニューラルネットワークがどのように機能するかについて学びます。実装したい現在の問題はより複雑です(40を超える入力ニューロン)
誰でも私を助けることができますか?