CNN(合成二重ニューラルネットワーク)


CNN:Convolutional Neural Networks(合成乗ニューラルネットワーク)

1. Convolution & Pooling

  • プロトコルは、2つの関数に対する演算
  • であり、そのうちの1つの関数が3番目の関数を生成し、別の関数をどのように修正するかを説明する.
  • 大会には、交換性、関連性、分配性など、多くの数学的属性がある.
  • 入力の形状を効果的に変更できるように構成

    1D-convolution



    2D-convolution


  • Filter:ウィンドウ
  • 、最小のフィーチャーをキャプチャするための重みパラメータからなる
  • Straid:フィルタを移動し、表示する画像の数を決定
    ex)Strideが1の場合は1マス移動し,ステップ長が2の場合は1マススキップし,Filterを適用すると,明らかに次の層のデータ数は
  • 減少する.
  • Padding:Zeros(または他の値)を画像の外角(エッジ)に配置し、convを行うときに元の画像と同じデータ量(Strid=1の場合)を得るのを助け、Zero-paddingはデータをスケーリングし、十分に利用するためにエッジに0を追加した.
  • 冷却層:特徴マッピングの階層を減少する、これらの減少した特徴を利用してANN形式のニューラルネットワークに分類または回帰する、
  • .
  • の利点
    ローカル機能:ローカル機能の配置
    weight sharing
    一定の動作があっても、説明はあまり難しくありません.
  • 2.CNN分類器



  • CNNの第一段階協同進化
    入力画像の領域を受信を担当するニューロンにマッピングする変換

  • 利点:従来の画像学習技術と比較して、画像前処理(トリミング、中心化、正規化)は相対的にほとんど必要ない/画像中のすべてのタイプのよくある問題(移動、照明など)に対して堅牢である
  • model = Sequential() 
    model.add(Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3)))
    model.add(MaxPooling2D((2,2)))
    model.add(Conv2D(64, (3,3), activation='relu'))
    model.add(MaxPooling2D((2,2)))
    model.add(Conv2D(64, (3,3), activation='relu'))
    model.add(Flatten())
    model.add(Dense(64, activation='relu'))
    model.add(Dense(10, activation='softmax'))
    
    model.summary()
    
    summary 출력'''
    Model: "sequential"
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    conv2d (Conv2D)              (None, 30, 30, 32)        896       
    _________________________________________________________________
    max_pooling2d (MaxPooling2D) (None, 15, 15, 32)        0         
    _________________________________________________________________
    conv2d_1 (Conv2D)            (None, 13, 13, 64)        18496     
    _________________________________________________________________
    max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64)          0         
    _________________________________________________________________
    conv2d_2 (Conv2D)            (None, 4, 4, 64)          36928     
    _________________________________________________________________
    flatten (Flatten)            (None, 1024)              0         
    _________________________________________________________________
    dense (Dense)                (None, 64)                65600     
    _________________________________________________________________
    dense_1 (Dense)              (None, 10)                650       
    =================================================================
    Total params: 122,570
    Trainable params: 122,570
    Non-trainable params: 0
    '''
    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
                  
    model.fit(train_images, train_labels, epochs=10,
    		validation_data=(test_images, test_labels))

    3.移転学習

  • 既存のデータ学習を再利用するためのネットワークのライブラリ
    「学習」とは、部分的に重みと偏向を含む学習済みのモデルを再使用することを意味し、transferlearningと呼ばれる.
  • 部分は使えますが、全部再学習できる
  • トレーニングデータの使用が少なく、トレーニング速度が速く、より良い汎用性モデル
  • を持つことができる.

    に道を教える

  • 以前に学習したモデルからパラメータを含む層
  • を取得する.
  • 以降の研修中に含まれる情報が破損することを避けるために、対応する情報を凍結(重み付けを更新せずに凍結)する
  • .
  • 凍結層の上にもう1層(学習可能層)を追加
    •出力レイヤの数を調整することで、新しいデータセットから必要な予測メソッド(分類、回帰など)に変換する方法を学習します.
  • の新しいデータセットから、新しく追加されたレイヤのみを学習
    •既存のレイヤーをフリーズしない場合は、学習したレイヤーから取得した重みを学習します
    •このような場合、学習すべきことが多くなるため、時間がかかる