我正在使用caffe和lmdb数据库将我的数据提供给网络。但是,我有两个不同的lmdbs用于输入和ground_truth,因为我的ground_truth也是图像。是否有可能使用shuffle?如果是,我可以将两个lmdbs的shuffle: true
设置为param吗?
layer {
name: "data"
type: "Data"
top: "data"
include {
phase: TRAIN
}
transform_param {
mean_value: X
}
data_param {
source: "..."
batch_size: X
backend: LMDB
}
答案 0 :(得分:0)
如果您使用图层类型"Data"
,则无法使用shuffle
,因为data_param
中没有随机播放参数。
对于图层类型"ImageData"
,您无法使用lmdb
作为数据源,因为source
文件应该是image address and label
的文本文件。但它有shuffle
参数。如果您查看image_data_layer.cpp内部,我会发现shuffle
是true
,那么使用epoch
algorithm在每个Fisher–Yates
中对图片来源进行随机播放。如果您使用两个不同的ImageData
图层,则会为每个图层调用ShuffleImages()
,并且两个shuffle不太可能生成相同的序列。因此,您无法在这两个shuffle
图层中的任何一个中使用ImageData
。