【发布时间】:2015-10-17 09:50:09
【问题描述】:
使用Caffe 创建用于训练的数据集我都尝试使用 HDF5 和 LMDB。但是,创建 LMDB 非常慢,甚至比 HDF5 还要慢。我正在尝试写大约 20,000 张图片。
我做错了什么?有什么我不知道的吗?
这是我创建 LMDB 的代码:
DB_KEY_FORMAT = "{:0>10d}"
db = lmdb.open(path, map_size=int(1e12))
curr_idx = 0
commit_size = 1000
for curr_commit_idx in range(0, num_data, commit_size):
with in_db_data.begin(write=True) as in_txn:
for i in range(curr_commit_idx, min(curr_commit_idx + commit_size, num_data)):
d, l = data[i], labels[i]
im_dat = caffe.io.array_to_datum(d.astype(float), label=int(l))
key = DB_KEY_FORMAT.format(curr_idx)
in_txn.put(key, im_dat.SerializeToString())
curr_idx += 1
db.close()
如您所见,我为每 1,000 张图像创建一个事务,因为我认为为每个图像创建一个事务会产生开销,但这似乎不会对性能产生太大影响。
【问题讨论】:
-
您为什么不使用
convert_imageset工具? -
@Shai:其实我不知道,但我也没有我的图像作为文件。但是,为什么它应该更快? Python实现这么慢吗?
-
我正在与
convert_imageset合作,在 ilsvrc12 (imagenet) 上转换约 100 万张图像的数据集,这需要一段时间,但它可以工作。 -
你从哪里得到你的
data? -
我有包含我的数据的 HDF5 文件。我知道 Caffe 可以使用 HDF5 文件作为数据源,不幸的是,这样做时 Caffe 不允许数据转换。