Tensorflow-convolutional-neural-networks
TensorFlow-畳み込みニューラルネットワーク
機械学習の概念を理解した後、焦点を深層学習の概念に移すことができます。 ディープラーニングは機械学習の一部であり、ここ数十年で研究者がとった重要なステップと考えられています。 ディープラーニングの実装例には、画像認識や音声認識などのアプリケーションが含まれます。
以下は、ディープニューラルネットワークの2つの重要なタイプです-
- 畳み込みニューラルネットワーク
- リカレントニューラルネットワーク
この章では、CNN、畳み込みニューラルネットワークに焦点を当てます。
畳み込みニューラルネットワーク
畳み込みニューラルネットワークは、アレイの複数のレイヤーを介してデータを処理するように設計されています。 このタイプのニューラルネットワークは、画像認識や顔認識などのアプリケーションで使用されます。 CNNと他の通常のニューラルネットワークの主な違いは、CNNが入力を2次元配列として受け取り、他のニューラルネットワークが焦点を当てる特徴抽出に焦点を当てるのではなく、画像に直接作用することです。
CNNの主要なアプローチには、認識の問題の解決策が含まれます。 GoogleやFacebookなどのトップ企業は、認識プロジェクトに向けた研究開発に投資して、活動をより迅速に完了させています。
畳み込みニューラルネットワークは3つの基本的なアイデアを使用します-
- 現地の各分野
- 畳み込み
- プーリング
これらのアイデアを詳細に理解しましょう。
CNNは、入力データ内に存在する空間相関を利用します。 ニューラルネットワークの各同時層は、いくつかの入力ニューロンを接続します。 この特定の領域は、局所受容野と呼ばれます。 局所受容野は隠れたニューロンに焦点を合わせています。 隠されたニューロンは、特定の境界外の変更を実現せずに、言及されたフィールド内の入力データを処理します。
以下は、ローカルの各フィールドを生成する図表です-
上記の表現を観察すると、各接続は、1つの層から別の層への移動に関連する接続を持つ隠れニューロンの重みを学習します。 ここでは、個々のニューロンが時々シフトを実行します。 このプロセスは「畳み込み」と呼ばれます。
入力レイヤーから非表示のフィーチャマップへの接続のマッピングは「共有ウェイト」として定義され、含まれるバイアスは「共有バイアス」と呼ばれます。
CNNまたは畳み込みニューラルネットワークは、CNN宣言の直後に配置されたプールレイヤーを使用します。 これは、畳み込みネットワークから得られる機能マップとしてユーザーからの入力を受け取り、圧縮された機能マップを準備します。 層のプーリングは、前の層のニューロンを持つ層の作成に役立ちます。
CNNのTensorFlow実装
このセクションでは、CNNのTensorFlow実装について学習します。 ネットワーク全体の実行と適切な次元を必要とする手順は、以下に示すとおりです-
- ステップ1 *-TensorFlowに必要なモジュールと、CNNモデルの計算に必要なデータセットモジュールを含めます。
ステップ2 *- run_cnn()*という関数を宣言します。これには、データプレースホルダーの宣言を含むさまざまなパラメーターと最適化変数が含まれます。 これらの最適化変数は、トレーニングパターンを宣言します。
ステップ3 *-このステップでは、28 x 28ピクセル= 784の入力パラメーターでトレーニングデータプレースホルダーを宣言します。 これは、 mnist.train.nextbatch()*から描画される平坦化された画像データです。
要件に応じてテンソルを変更できます。 最初の値(-1)は、渡されたデータの量に基づいてそのディメンションを動的にシェーピングするように関数に指示します。 中間の2つの寸法は画像サイズに設定されます(つまり、 28 x 28)。
- ステップ4 *-畳み込み層を作成することが重要です-
- ステップ5 *-出力を完全に接続された出力ステージの準備を整えます-28 x 28の寸法の2層のストライド2プーリングの後、14 x 14または最小7 x 7 x、y座標の寸法に、ただし出力チャンネルは64です。 「密」レイヤーと完全に接続されたレイヤーを作成するには、新しい形状が[-1、7 x 7 x 64]である必要があります。 このレイヤーにいくつかの重みとバイアス値を設定し、ReLUでアクティブ化できます。
- ステップ6 *-必要なオプティマイザーを使用した特定のsoftmaxアクティベーションを持つ別のレイヤーが精度評価を定義し、初期化演算子のセットアップを行います。
- ステップ7 *-記録変数を設定する必要があります。 これにより、データの正確性を保存するための要約が追加されます。
以下は、上記のコードによって生成された出力です-