-4

私は研究で Java で Encog 2.4.0 を使用して、フォントの数字 (0-9) 認識における逆伝播と遺伝的アルゴリズムを評価しています。JavaCV を使用して数字 (画像) を 0 と 1 のテキスト ファイルに処理しています。各行は 1 つのフォント画像画像を表します。各フォント (線) には 256 の属性 (0 または 1) があります。私のネットワーク入力ノード番号は 256 で、出力ノードは 10 (クラス) で、ネットワークでシグモイド活性化関数を使用しています。私の出力も0と1に正規化されました(たとえば、1000000000は0を意味し、0100000000は1を意味し、9まで続きます)。異なるトレーニング セット (100 ~ 700 サンプル) と、学習率と運動量の異なるパラメーターを使用したテスト セット (50 ~ 300) を使用した 11 回のテスト実行により、精度と速度の両方を備えた逆伝播パフォーマンスに非常に満足しています (10 秒から< 4 分)。しかし残念ながら :

ネットワークの入出力構造は、XOR の例に似ています。XOR 入力は 4 X 2 の配列で、出力は 4 X 1 です。

私の場合は、「サンプル数」X 256 が入力で、「サンプル数」X 10 が出力です。

誰かが私が間違っているところに光を当てることができますか?

ありがとう、ホス

4

1 に答える 1

1

まず、これは非常に古いバージョンの Encog です。遺伝的アルゴリズムのコードは 3.x で大幅に変更されたので、それだけでも役に立ちます。

収束に失敗する理由については、実際のデータを見て実験しないと、難しい質問になる可能性があります。いくつかのアイデア。

  • 人口が適切に作成されていることを確認します。母集団の最良のメンバーを取り、それをバックプロップ トレーニングして収束できるかどうかを確認します。アクティベーション関数が期待どおりであることを確認してください。
  • GA と BP でトレーニングされたネットワークの重みの範囲を調べて、GA の重みを異常な範囲に押し上げる異常なことが起こっていないかどうかを確認します。
于 2014-09-01T01:19:34.703 に答える