Caffeの下で神経ネットの中のいくつかの特殊な層を畳み込みます.


Caffe下の巻き込み神経ネットワーク(CNN)の中のいくつかの特殊層
作者:xg 123321123
出典:http://blog.csdn.net/xg123321123/article/details/52610919
声明:著作権はすべて、転載して作者に連絡してそして出所を明記して下さい.
バッtch Normalzation
  • 意味:ネットワークトレーニング時、収束速度を速めるために使用される
  • リマインダ:
  • はすでにBNを一つのlayerに統合しました.使う時はscale層と一緒に
  • を使用する必要があります.
  • を訓練する時、BN層のuse_をglobal_statsはfalseに設定されています.テストの時はuse_をします.global_スターtsはtrueに設定されています.訓練の時に「NAN」またはモデルが収束しないと報告されます.兄弟子の経験はまだ試したことがありません.
  • 使用法:残差神経ネットワークの詳細な使用
    Dropout
  • 意味:モデルのオーバーフィットを防止する;トレーニングモデルの場合、ランダムにネットワークのいくつかの暗黙的なノードの重みを動作させない(動作しないノードは、一時的にネットワーク構造の一部ではないと考えられてもよいが、その重みは保留されていて、一時的に更新されないだけで、次のサンプル入力時にはまた動作するかもしれないので)
  • 使い方:
    layer{
    name:"drop 7"
    type:「Dropout」
    bottom:「fc 7-conv」
    top:「fc 7-conv」
    dropout uparam{
    dropoutウルテラオ:0.5
    )
    )
  • ReLU
  • 意味:関数の活性化の一種.所定の入力値xに対して、x>0の場合、ReLU層の出力はxであり、x<0の場合、ReLU層の出力は0である.
  • は、オプションパラメータnegative_slopeに対して、このパラメータによりx<0の場合、ReLU層の出力がnegative gative_となります.sloope*x;現在はReLUの進化版、PReLU
  • があります.
  • 使い方:
    layer{name:“relu 1”type:“ReLU”bottom:“conv 1”top:“conv 1”relu uparam{negativemuslope:[デフォルト:0]}
  • PReLU
  • 意味:ReLuの進化版.
  • は、負の半軸の出力に係数を乗算し、この係数は学習可能(学習率を指定することができます)であり、valueは係数の初期値であり、chanel_sharedは、各チャネル間でこの係数を共有するかどうかを指定します.ある実験はより速く、よりよく収束するということですが、ある実験の正確性はある程度低下しています.具体的な効果はやはり具体的な実験に準じることができます.
    layer{name:“relu 1”type:“PReLU”bottom:“conv 1”top:“conv 1”param{lr mult:1 decaymult:0}prelupuram{value:0.33則:デフォルトは0.25}chanelushard false
  • スプリット
  • 意味:一つのblobをn部
  • にコピーする.
  • は、「caffeは陰的にこの操作をします.私もいつ式的にこの操作を使うか分かりません.ここに置いてください.(実際にこの操作を使ったことがないので、次の使い方は必ずしも正しいとは限りません.)」と注意しています.
  • 使い方:
    layer{name:“split”type:“split”bottom:“rois”top:“rois 1”top:“rois 2”}
  • Reshape
  • 意味:blobの次元を変えて、自身のデータ
  • を変えない.
  • によると、各blobは4次元であるため、4つのdimパラメータがある.【0は次元を変更しない値を表し、−1はcaffeによって計算された値を表し、正数は次元を対応する値に変更することを表す.】
    layer{name:“reshape”type:“Resehape”bottom:“conv 1”top:“conv 1”reshape{sharam{dim:0}copy the dimension from below dim:2 dim:3 dim:-1摥infeit from the Heotions}注:1つのパラメータがそれぞれdim:1 dim:3 dim:2 dim:-1のreshpe層である場合、入力は1次元が1*2*3*4のblobである場合、出力のblob次元は1*3*2*4である(そのうち4はcaffeで計算されている).
  • InnerProduct
  • は、入力データを単純なベクトル形式で処理し、簡単なベクトルを出力することを意味する.簡単に言えば、これは畳み込み動作であり、畳み込み核サイズとfeature mapが同じであるため、出力ベクトルサイズは1*1
  • である.
  • 欠点:全接続層を含むモデル(例えばAlexNet)を使用するには、固定サイズの入力が必要であり、入力ピクチャが変形しなければならないので、非常に不合理な場合があります.
  • リマインダ:
  • 必要な引数:numuout put(cuo):フィルタ数
  • 強く提案されたパラメータ:weighttufiller:フィルタの初期分布と分布パラメータ.
  • オプションパラメータ:bias_filler:[デフォルト:type:‘constant’value:0]bias term:[デフォルト:true]フィルタ出力後に追加のバイアスを学習して適用するかどうかを指定します.
  • 使い方:
    layer{name:“fc 8”type:“InnerProduct”bottom:“fc 7”top:“fc 8”
    param{Ülearning rate and decay multiliers for the weight lrumult:1 decaymult:1}
    param{脼learning rate and decay multiliers for the biases lrumult:2 decaymult:0}
    inneran uputput:1000
    weight-ufiller{type:「xavier」std:0.01}
    BIAS_filler{type:「constant」value:0}注:上の階の入力はn*cui*hui*wuiで、n*1000*1*1と入力されます.
  • Crop
  • 意味:二つのblobを入力して、bottom[0]をbottom[1]のサイズに合わせて裁断する.
  • リマインダ:
  • axis=0,1,2,3はそれぞれN,C,H,Wと表しています.デフォルトのaxisは2に等しいです.つまりデフォルトはHから裁断します.1つだけ設定してもいいし、各dimensionに
  • をそれぞれ設定してもいいです.
  • offsetは裁断時のオフセットを表しています.
  • 用法:
  • layer{
    type:「Crop」
    name:‘crop’
    bottom:‘score-dsn 1-up’
    bottom:‘data’
    トップ:‘uscore-dsn 1’
    crop uaram{
    axis:2
    オフセット:5
    )
    )