1

我想在 python 中创建一个 lmdb 数据,其中标签不是标量,但每个标签都是 (1,K) 向量,K 是类数。更具体地说,标签向量除对应的类索引为 1 外,处处为零。

我在python中测试了以下代码:

with env.begin(write=True) as txn:
    for i in range(N):
        datum = caffe.proto.caffe_pb2.Datum()
        datum.channels = X.shape[1]
        datum.height = X.shape[2]
        datum.width = X.shape[3]
        datum.data = X[i].tobytes()  # or .tostring() if numpy < 1.9
        datum.label = int(y[i])
        str_id = '{:08}'.format(i)
        txn.put(str_id.encode('ascii'), datum.SerializeToString())
        print i+1

但是我得到了这个错误,如上所述,numpy (1,k) 向量TypeError: only length-1 arrays can be converted to Python scalars在哪里。y[i]

我也想知道 caffe 是否会接受这种格式的标签。

任何帮助将不胜感激

4

1 回答 1

1

是的,caffe 支持将numpy数组转换为数据,然后你可以把数据放到lmdb。

用于将numpy_arraycaffe.io.array_to_datum(numpy_array)转换为 datum,注意 numpy_array 必须有 4 个轴,因此如果要将向量放入 lmdb,则应初始化形状为 [1,1,1,M] 的 numpy_array,而 M 是长度你的向量。

是一个将图像/地图对写入 lmdb 的工具,可以馈送到 caffe 网络。

于 2016-04-14T05:59:27.127 回答