ホームページ >よくある問題 >alexnet ネットワーク構造の詳細な説明

alexnet ネットワーク構造の詳細な説明

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-07-02 11:55:127045ブラウズ

畳み込み層 1 の最初の層、畳み込みカーネルの数は 96、畳み込み層 2 の 2 番目の層、畳み込み数は 256、畳み込み 3 の 3 番目の層、入力は 2 番目です。層の出力、畳み込みカーネルの数は 384、畳み込み 4 の 4 層目、入力は 3 層目の出力、畳み込みカーネルの数は 384、畳み込み 5 の 5 層目、入力は出力4層目のコンボリューションカーネル数は256です。

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

AlexNet ネットワークは、2012 年の ImageNet コンテストのチャンピオンであるヒントンと彼の生徒であるアレックス クリジェフスキーによって設計されました。その年以降、優れた vgg や GoogleLeNet など、より多くのより深いニューラル ネットワークが提案されました。公式に提供されているデータ モデルの精度は 57.1% に達し、上位 1 ~ 5 は 80.2% に達します。これは、従来の機械学習分類アルゴリズムとしてはすでに非常に優れています。 #ネットワーク構造分析

alexnet ネットワーク構造の詳細な説明

上の図は、2 つの GPU サーバーを使用した caffe の alexnet のネットワーク構造を示しています。すべてが 2 つのフローチャートで表示されます。 AlexNet のネットワーク モデルは次のように解釈されます:

alexnet ネットワーク構造の詳細な説明

解釈は次のようになります: alexnet ネットワーク構造の詳細な説明

第一层:卷积层1,输入为 224×224×3 224 \times 224 \times 3224×224×3的图像,卷积核的数量为96,论文中两片GPU分别计算48个核; 卷积核的大小为 11×11×3 11 \times 11 \times 311×11×3; stride = 4, stride表示的是步长, pad = 0, 表示不扩充边缘;卷积后的图形大小是怎样的呢?
wide = (224 + 2 * padding - kernel_size) / stride + 1 = 54height = (224 + 2 * padding - kernel_size) / stride + 1 = 54dimention = 96然后进行 (Local Response Normalized), 后面跟着池化pool_size = (3, 3), stride = 2, pad = 0 最终获得第一层卷积的feature map最终第一层卷积的输出为

第二层:卷积层2, 输入为上一层卷积的feature map, 卷积的个数为256个,论文中的两个GPU分别有128个卷积核。卷积核的大小为:5×5×48 5 \times 5 \times 485×5×48; pad = 2, stride = 1; 然后做 LRN, 最后 max_pooling, pool_size = (3, 3), stride = 2;
第三层:卷积3, 输入为第二层的输出,卷积核个数为384, kernel_size = (3×3×256 3 \times 3 \times 2563×3×256), padding = 1, 第三层没有做LRN和Pool

第四层:卷积4, 输入为第三层的输出,卷积核个数为384, kernel_size = (3×3 3 \times 33×3), padding = 1, 和第三层一样,没有LRN和Pool

第五层:卷积5, 输入为第四层的输出,卷积核个数为256, kernel_size = (3×3 3 \times 33×3), padding = 1。然后直接进行max_pooling, pool_size = (3, 3), stride = 2;第6,7,8层是全连接层,每一层的神经元的个数为4096,最终输出softmax为1000,因为上面介绍过,ImageNet这个比赛的分类个数为1000。全连接层中使用了RELU和Dropout。

図面を使用するcaffe に付属するツール (caffe/python/draw_net.py) と、caffe/models/bvlc_alexnet/ ディレクトリの下に train_val.prototxt によって描画されるネットワーク構造図は次のとおりです。

alexnet ネットワーク構造の詳細な説明アルゴリズム革新ポイント

(1) CNNの活性化関数としてReLUを利用することに成功し、その効果が深層ネットワークにおいてシグモイドを超えることを検証し、CNNの勾配分散問題の解決に成功しました。より深いネットワークではシグモイド。 ReLU 活性化関数はずっと前に提案されましたが、それが引き継がれるようになったのは、AlexNet の出現まででした。

(2) モデルの過学習を避けるために、ドロップアウトを使用してトレーニング中に一部のニューロンをランダムに無視します。 Dropout については別の論文でも議論されていますが、AlexNet によって実用化されており、実践を通じてその効果が確認されています。 AlexNet では、Dropout は主に最後のいくつかの完全に接続された層で使用されます。

alexnet ネットワーク構造の詳細な説明(3) CNN で重複最大プーリングを使用します。以前は、CNN では平均プーリングが一般的に使用されており、AlexNet はすべて、平均プーリングによるぼやけ効果を避けるために最大プーリングを使用していました。さらに、AlexNet は、ステップ長がプーリング カーネルのサイズより小さいことを提案しています。これにより、プーリング層の出力間に重複とカバレッジが生じ、機能の豊富さが向上します。

(4) LRN 層は、局所ニューロンの活動に対する競合メカニズムを作成し、応答が大きい値を相対的に大きくし、フィードバックが小さい他のニューロンを抑制することでモデルの汎化能力を高めることを提案しています。 。 (5) マルチ GPU トレーニングによりネットワーク トレーニングの規模を拡大できます

(6) 100 万レベルの ImageNet データ画像入力 AlexNet では 3 つのデータ拡張手法が使用されます:

平行移動変換 (クロップ);

反射変換 (反転);

照明と色の変換 (カラー ジッタリング): 最初に画像をランダムに平行移動し、次に水平方向に反転します。テストでは、まず左上、右上、左下、右下、中央で 5 つの変換変換を実行し、次に反転後の結果を平均します。

概要は次のとおりです:

ReLU 活性化関数を使用する;

過学習を防ぐために Dropout を提案する;

    データ拡張を使用してデータセットを強化する (データ拡張) ;
  1. 画像の水平反転、ランダムなトリミング、変換変換、色変換、照明変換など

  2. 複数の GPU を使用するトレーニング用;

上位層の結果をチャネル次元に従って 2 つの部分に分割し、それぞれ 2 つの GPU に送信します。例: 27×27×96 ピクセル レイヤーの出力前のレイヤーによる (27×27×48 の 2 つのグループに分割されます。ピクセル レイヤーは、操作のために 2 つの異なる GPU に配置されます);

    LRN ローカル正規化の使用;
オーバーラップ プーリング (3*3 プーリング カーネル) を使用します。

  1. Caffe フレームワークでのトレーニング

  2. データセットを準備し、Alexnet ネットワークの train.prototxt を変更し、ソルバーを構成し、デプロイします。 prototxt ファイルを開き、新しい train .sh スクリプトを作成してトレーニングを開始します。
  3. コンピュータ関連の知識について詳しくは、

    FAQ
  4. 列をご覧ください。

以上がalexnet ネットワーク構造の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。