1

私はJavaでImageNeuralNetworkの例を学び、適応させようとしています。これまでのところ、私の問題は、NNに32X32の大量の画像を与えてトレーニングさせると、エラーが14%を下回ることはなく、最初はあちこちにジャンプすることです。

私の画像はBWで、27のクラスに分類されています。つまり、27 個の出力ニューロンがあることがわかっています。

私の質問は、NN が学習しない理由です。異なるニューロン数で異なる隠れ層 (1 または 2 層) を設定しようとしましたが、何も役に立ちません。

誰かが私が間違っていることを教えてもらえますか? 私が言ったように、私はNNから始めたばかりで、ここで少し迷っています

編集:エラーが発生することを知るために入力として与える画像を少なくすると、問題は解決しません。多くの画像を分類したい場合、エラーが発生しないままになります。

4

1 に答える 1

1

非表示レイヤーを 1 つだけ使用する必要があります。ニューラル ネットワークに隠れ層を追加しても、実際にはあまり効果がありません。万能近似定理を参照してください。隠れニューロンの数として (入力カウント + 出力カウント) * 1.5 から始めてみます。

ANN がより多くの画像をカバーできない理由については、それはより困難です。最も可能性が高いのは、追加の画像が多様すぎて、ANN ですべてを分類できないためです。単純なフィードフォワード ANN は、グリッドベースの画像認識には理想的ではありません。ニューラル ネットワークは、どのピクセルが隣り合っているかを認識しません。これは、ピクセルの直線的な線形ベクトルにすぎません。ANN は基本的に、各文字にどのピクセルが存在する必要があるかを学習しています。文字の 1 つを少しでも移動すると、ANN はそれを認識しない可能性があります。これは、トレーニングに使用したほぼすべてのピクセルを移動したためです。

私はOCRをあまり使いません。ただし、これは深層学習が得意とする分野のようです。畳み込みニューラル ネットワークは、互いに近くにあるピクセルをより適切に処理して近似することができます。ディープ ラーニング アプリケーションを使用すると、より良い結果が得られる場合があります。詳細はこちら: http://dpkingma.com/sgvb_mnist_demo/demo.html

于 2014-11-08T02:29:02.690 に答える