2017-07-16 26 views
0

実験的なニューラルネットワークを構築しました。これは、JPEG画像を見て、画像のどの部分が楽譜であるかを識別できるという考え方です。ニューラルネットワークと画像の分類

ネットワークを訓練するために、私は1.0で評価される(表記を含む)か0.0(表記が含まれない)のいずれかを取ることができる100 x 100箱にカットされたページのさまざまなイメージを使用しました。

ネットワークのトレーニングでは、多かれ少なかれ、毎回0.5の結果を出すように修正されているようです(0.25の二乗誤差を与えます)。シグモイド(ロジスティック)関数は、アクティブ化に使用されます。

ネットワークには10,000個の入力ニューロン(100 x 100画像の各ピクセル)、2000個の隠れニューロン(各入力は「行」と「列」隠れニューロンの両方に接続されています)があります。

出力ニューロンが1つあります。

出力ニューロンが2つの方が良い結果が得られますか? (すなわち、 '音楽は活性化するものであり、'音楽は活性化しないもの ')。

(あなたがここでは、このためのC++のソースを見ることができます:。https://github.com/mcmenaminadrian/musonet - 任意の時点で、公共のレポにあるもののに私はマシン上で使用しています正確に何ではないかもしれない)

+0

aargh - コードのマイナス記号が欠落している可能性があります。つまり、出力レイヤーの誤った修正によって隠れたレイヤーの修正が行われていたことを意味します。ただ今これをチェックしてください。 – adrianmcmenamin

+0

私はその話題についてはまったく分かりませんが、出力ニューロンは1つだけです。その出力が特定の閾値を下回っている場合は「音楽」を含み、それが別の閾値を上回る場合は「音楽」ではありません。 – Professor901

答えて

0

FWIW - 実際の問題コメントに記述されているコードの符号エラーのためでした。そのため、2つのレイヤーが互いに戦い、期待通りに真ん中に向かって収束しました。

しかし、私は1990年代の本、つまりC++の実用的なニューラルネットワークのレシピに基づいています。この本のように何も問題はありません(C++はその時のコーディングスタイルを反映していますが、STLクラスなどは使用していません)。しかし、ニューラルネットも理解/設計されていない時代から来ています。今日では基本的なデザインにはかなりの欠陥がありました。

私は現在、本書では何も説明されていない、多くの階層化された畳み込みネットワークをどのように実装するのがベストかと考えています(実際には、単一の隠れ層NNが一般的な近似値)。

単一の隠れ層NNで興味深い結果が得られましたが、画像処理にはそれほど有用ではありません。

関連する問題