2017-04-13 53 views
0

我使用caffe和lmdb數據庫將我的數據提供給網絡。不過,我有兩個不同的lmdbs用於輸入和ground_truth,因爲我的ground_truth也是圖像。反正可以使用洗牌嗎?如果是的話,我可以將lmdbs的shuffle: true設置爲param嗎?與多個tmdbs隨機混搭

layer { 
    name: "data" 
    type: "Data" 
    top: "data" 
    include { 
    phase: TRAIN 
    } 
    transform_param { 
    mean_value: X 
    } 
    data_param { 
    source: "..." 
    batch_size: X 
    backend: LMDB 
    } 
+0

lmdb支持'shuffle'參數嗎? – lnman

+0

是的,但我使用兩種不同的lmdbs。 @Inman – thigi

+0

我無法在lmdb參數中的caffe.proto中找到隨機播放。請你指出來嗎?我認爲這是在hdf5。 – lnman

回答

1
  1. 如果使用"Data"你不能使用shuffle,因爲在data_param沒有洗牌參數層類型。

  2. 至於層型"ImageData"不能使用lmdb作爲數據源,source文件應該是一個文本文件,image address and label。但它有shuffle參數。如果你看看image_data_layer.cpp裏面,你會發現如果shuffletrue然後圖像源洗牌每個epoch使用Fisher–Yatesalgorithm。如果您使用兩個不同的ImageData圖層,那麼將爲它們中的每一個調用ShuffleImages(),並且兩個隨機播放不可能生成相同的序列。所以你不能在這兩個ImageData層中的任何一箇中使用shuffle

+0

是的,這就是我的想法。謝謝 – thigi