1. 程式人生 > >caffe 資料層(lmdb資料來源)引數配置

caffe 資料層(lmdb資料來源)引數配置

layer {
  name: "my_data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mean_file: "/home/hanwannan/mean.binaryproto"
    scale: 0.00390625
    mirror: 1  # 1表示開啟資料增強,0表示關閉,也可用ture和false來表示
    # 剪裁一個 32*32的圖塊,在訓練階段隨機剪裁,在測試階段從中間裁剪
    crop_size: 32
  }
  data_param {
    source: "/home/hanwannan/train_lmdb"
    batch_size: 128
    backend: LMDB
  }
}

 

name: 表示該層的名稱,可隨意取

type: 層型別,如果是Data,表示資料來源於LevelDB或LMDB。根據資料的來源不同,資料層的型別也不同。

top或bottom: 每一層用bottom來輸入資料,用top來輸出資料。如果只有top沒有bottom,則此層只有輸出,沒有輸入。反之亦然。如果有多個 top或多個bottom,表示有多個blobs資料的輸入和輸出。

data 與 label: 在資料層中,至少有一個命名為data的top。如果有第二個top,一般命名為label。 這種(data,label)配對是分類模型所必需的。

include

: 一般訓練的時候和測試的時候,模型的層是不一樣的。如果phase為TRAIN,該層是屬於訓練階段的層,如果phase為TEST屬於測試階段的層。如果沒有include引數,則表示該層既在訓練模型中,又在測試模型中。

Transformations:
     資料的預處理,可以將資料變換到定義的範圍內。
     scale : 0.00390625,實際上就是1.0/256, 即將輸入資料由0-255歸一化到0-1之間
      mean_file : 均值檔案(如何生成後續會發程式碼)
      mirror: 1 1表示開啟資料增強,0表示關閉,也可用ture和false來表示
     crop_size: 32# 剪裁一個 32*32的圖塊,在訓練階段隨機剪裁,在測試階段從中間裁剪

data_param引數就是根據資料的來源不同,來進行不同的設定。

資料來自於資料庫如LMDB的引數配置

必選引數:

  source: 資料集路徑,如/home/hanwannan/train_lmdb(後續會發表lmdb資料集製作方法)

  batch_size: 每次處理的資料個數,如128

可選的引數:

  rand_skip: 在開始的時候,路過某個資料的輸入。通常對非同步的SGD很有用。

  backend: 選擇是採用LevelDB還是LMDB, 預設是LevelDB.