深層学習MNIST手書き数字認識-畳み込みニューラルネットワークトレーニングモデルとオンライン認識の基本的な知識のためのguiウィンドウの生成

基本的な知識の準備

1.畳み込み

名前が示すように、畳み込み層は一連の畳み込みユニット(「畳み込みカーネル」とも呼ばれます)で構成されます。これらの畳み込みユニットはフィルターとして理解でき、各フィルターは特定の特徴を抽出します。

畳み込み層の機能の理解

  • 一般に、画像の空間的関係は、ローカルピクセルがより密接に関連し、遠くにあるピクセルはあまり関連していないと考えられています。したがって、ローカルが認識されている限り、各ニューロンはグローバルイメージを認識し、次に上位層を認識する必要はありません。ローカル情報を統合してグローバル情報を取得します。
  • 入力画像が与えられたら、畳み込みカーネルを使用して画像をスキャンします。畳み込みカーネルの数値は重みと呼ばれます。この画像の各位置は同じ畳み込みカーネルによってスキャンされるため、重みは同じです。これがウェイトシェアリングです。
  • ウェイトシェアリングの部分で述べたように、1回のコンボリューションカーネル操作で1つの機能しか取得できず、すべての機能を取得できない場合があるため、マルチコアコンボリューションを導入しました。さまざまな畳み込みカーネルを使用してさまざまな機能を学習し(各畳み込みカーネルはさまざまな重みを学習します)、元の画像の特徴を抽出します。マルチコアコンボリューションのプロセスでは、各コンボリューションカーネルのサイズが同じである必要があることに注意してください。

 

次の動的図は、畳み込み層の計算プロセスを鮮明に示しています。

 

2.プーリングレイヤー(POOL) 

 

畳み込み層のフィルターは、画像からルールを見つける役割を果たします。フィルターが多いほど、パラメーターが多くなります。つまり、畳み込み層の寸法が非常に大きくなる可能性があります。次元数を減らす方法が必要です。これが、畳み込みネットワークにおけるプーリング層(別名「ダウンサンプリング層」)の役割です。

プーリング層の機能の理解

  • 画像のサイズを小さくします。これにより、受容フィールドが大きくなります。受容フィールドは、デジタルマトリックスの数値に対応する元の画像の領域のサイズです。プーリングは特定の範囲内の数値を選択することであるため、つまり、この数値がこの範囲内のすべてのピクセルの値を表すようにします。これにより一部の画像情報も失われますが、堅牢性も向上します。
  • 翻訳の不変性を高めます。写真内のターゲットの単純な位置移動は、認識結果に影響を与えないはずです。プーリングは、ターゲットの場所ではなく、ターゲットの特性を正確にキャプチャするため、変換の不変性が増加します。
  • トレーニング速度を向上させます。これは、機能情報を保持しながら画像のサイズを縮小するためです。

プーリングには、一般的なプーリング、オーバーラッププーリング、ピラミッドプーリングの3つの主要な形式があります。

(1)一般的なプーリング

プーリングウィンドウのサイズはn * nです。通常、プーリングウィンドウは正方形です。ストライドはnに等しい。現時点では、プーリングウィンドウ間に重複はありません。デジタルマトリックスの範囲を超えるものについては、範囲内または範囲外のもののみが計算され、0で埋められます。最大プーリングと平均プーリングに分けることができます。

  • 最大プーリング

プーリングウィンドウ内の最大値が、サンプリングされた出力値として使用されます。
入力が4×4マトリックスの場合、実行される最大プーリングは2×2マトリックスであり、一度に2ステップスライドします。実行プロセスは非常に単純で、4×4入力を異なる領域に分割し、これらの領域を異なる色でマークします。2×2出力の場合、出力の各要素は、対応するカラー領域の最大要素値です。

各2 * 2ウィンドウについて、出力マトリックスの対応する要素の値として最大数を選択します。たとえば、入力マトリックスの最初の2 * 2ウィンドウの最大数が6の場合、出力マトリックスの最初の要素は6です。等々。 

  • 平均プーリング

通常の平均プーリングは、サンプリングされた出力値としてプーリングウィンドウ内の平均値を使用することです。このプーリングは、最大プーリングほど一般的ではありません。

 

3.インセンティブレイヤー

畳み込み層の出力結果は非線形にマッピングされます。

 

 

CNNで使用される励起関数は、一般にReLU(The Rectified Linear Unit)であり、高速収束と単純な勾配計算が特徴ですが、比較的壊れやすいです。画像は次のとおりです。

 

インセンティブレイヤーの実践経験:
①シグモイドを使用しないでください!シグモイドは使用しないでください。シグモイドは使用しないでください。
②最初にRELUを試してみてください。速いので注意してください。③2
が失敗した場合は、Leaky ReLUまたはMaxoutを使用してください。④tanhで
良い結果が得られる場合もありますが、まれです。

4.完全に接続されたレイヤー

2つの層の間のすべてのニューロンには、再接続するための重みがあります。通常、完全に接続された層は、畳み込み神経ネットワークの末尾にあります。つまり、従来のニューラルネットワークのニューロンの接続方法は同じです。

 

一般的なCNN構造は次のとおりです。

1.INPUT2
。[[CONV-> RELU] N-> POOL?] M
3. [FC-> RELU] * K
4.FC

5.畳み込み層のパディング式

元の画像を直接畳み込む場合、2つの問題があります。1つ目は、各コンボリューション後に画像(フィーチャマップ)が縮小されるため、数回スクロールされないことです。2つ目は、画像の中央のポイントと比較して、画像の端のポイントがコンボリューションで計算される頻度が少ないため、結果としてエッジの情報は簡単に失われます。
この問題を解決するために、充填方法を使用できます。各コンボリューションの前に、画像の周りの空白の円を埋めて、コンボリューション後の画像が元の画像と同じ大きさになるようにすると同時に、元のエッジもより多く計算されます。

 

 

たとえば、(8,8)の画像を(10,10)に追加すると、(3,3)のフィルターの後、(8,8)は変更されません。
入力データと出力データの空間サイズを同じにすることができます。ゼロパディングの数をp、畳み込みカーネルをf * f、畳み込みカーネルのスライドステップをsとすると、pは次のように設定する必要があります。

 

畳み込み層の出力サイズを計算する式

元の入力画像がm * m、出力画像がn * n、ゼロパディングの数がp、畳み込みカーネルがf * f、畳み込みカーネルのスライドステップがsであるとすると、出力サイズは次のようになります。

畳み込み後のパラメータ数を計算する

入力画像が(m、m、d)であり、dが画像の深さ(チャネル数)であり、畳み込みカーネルがf * fであり、畳み込みカーネルの数がnであるとすると、重みの数は

バイアスの数です

プーリング層の出力サイズを計算する式

プーリングレイヤーがゼロパディングを使用することはめったにありません。元の入力画像がm * m、出力画像がn * n、畳み込みカーネルがf * f、畳み込みカーネルのスライドステップがsであるとすると、出力サイズは次のようになります。

コードは整理されており、次の記事で共有されます

おすすめ

転載: blog.csdn.net/weixin_47440593/article/details/109412527