2017-06-29 8 views
2

私は非常に(非常に)初心者であり、ANNと読むのはthis tutorialです。著者は次のOCRの例についてANNを説明します。ニューラルネットワークを用いた数字認識の具体例

8x8グリッドに等しいセル(セルは常に同じサイズ)を持つバイナリイメージがあります。すべての数字はグリッドのいくつかのセルを使用して形成されます。すべての画像に数字のいずれかがあります0-9

さらに、訓練されたすべての桁が同じ8x8グリッド(例えば、訓練された桁のベクトル4 =認識された桁のベクトル4)を持つと仮定します。例えば

これは桁4の画像です:
enter image description here

そこで彼は、我々は64個の入力(すべてのグリッドセルのための1つの入力を)必要があると述べています。 10個の出力ノードが必要です(10桁があります)。 1つの隠れノードの層があると考えられます。しかし、私はこのすべての結果がどのように作用するのか理解できません。

私たちが必要とする隠れたノードの数と、これらの隠されたノードは何をする必要がありますか?

P.S. OCR処理の前処理、セグメンテーション、プレゼンテーションのすべてを支援する必要はありません。我々は既に長さ64の特徴のベクトルを持っています。

答えて

0

隠れニューロンはいくつでも構いません。ウェイトは入力ベクトルを乗算する行列なので、レイヤーの出力は任意のサイズにできます。あなたの例では、重み行列のサイズは次のようになります。注:私は非直線性を除外しています。 Sigmoid、tanh、reluのいずれかであり、要素的に動作し、形状を変更しないためです。

output = output_weights * hidden_weights * input 
10 x 1 10 x num_hid num_hid x 64  64 x 1 

隠されたニューロンが実際に行うことははるかに微妙です。このアプリケーションでは、「4のように見える64ピクセルの画像」と「3のように見える64ピクセルの画像」の間隔を区切る決定境界を見つけようとしています。単層ニューラルネット(akaパーセプトロン)は、線形決定境界のみを計算することができる。より深いニューラルネットは、より複雑な決定境界をモデル化するための柔軟性を与えます。

より良い直感のために、Tensorflow web demoで遊んでみてください。パラメータを変更して、より多くのレイヤーを追加することで表現力が増し、ニューロンを追加することで精度がどのように変化するかを確認できます。

関連する問題