【问题标题】:Labels as a matrix in LMDB data using python使用 python 将标签作为 LMDB 数据中的矩阵
【发布时间】:2016-04-13 16:49:59
【问题描述】:

我想在 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

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

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

任何帮助将不胜感激

【问题讨论】:

    标签: python pycaffe lmdb


    【解决方案1】:

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

    使用caffe.io.array_to_datum(numpy_array)将numpy_array转换为基准,注意numpy_array必须有4个轴,所以如果你想把一个向量放入lmdb,你应该初始化一个形状为[1,1,1,M]的numpy_array ,而 M 是向量的长度。

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

    【讨论】:

      猜你喜欢
      • 2014-07-11
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多