1×n的时间信号数据如何转化成lmdb格式?

用convert_image可以很方便的将图片数据转换为lmdb,但是我的数据是一列信号,请问应该怎样转化成lmdb格式呢?

目前已知的一个将图片转化成lmdb格式的python的程序是:
import numpy as np
import lmdb
import caffe

N = 1000

# Let's pretend this is interesting data
X = np.zeros((N, 3, 32, 32), dtype=np.uint8)
y = np.zeros(N, dtype=np.int64)

# We need to prepare the database for the size. We'll set it 10 times
# greater than what we theoretically need. There is little drawback to
# setting this too big. If you still run into problem after raising
# this, you might want to try saving fewer entries in a single
# transaction.
map_size = X.nbytes * 10

env = lmdb.open('mylmdb', map_size=map_size)

with env.begin(write=True) as txn:
# txn is a Transaction object
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.tobytes() # or .tostring() if numpy < 1.9
datum.label = int(y[i])
str_id = '{:08}'.format(i)

# The encode is only essential in Python 3
txn.put(str_id.encode('ascii'), datum.SerializeToString())

可以在这个程序上进行修改,实现将信号数据转化成lmdb格式的功能吗?

以上程序引自:http://deepdish.io/2015/04/28/creating-lmdb-in-python/
[/i]

PS:
问题解决[i],[/i]发现是因为caffe的数据格式必须是四维的,而我之前只保存成了二维。
已邀请:

Goodwin

赞同来自: caffe


X = np.zeros((N, 3, 32, 32), dtype=np.uint8)

这里读取你的时序信号就好了。
因为是时序信号,一般可能是下面这个样子:
X = np.zeros((N, 1, 1, D), dtype=np.float32)

里面D就是时序信号的维度(n),用np.float32类型保存。
 
PS: 还是推荐使用HDF5格式。
 

Chen_Sir

赞同来自:

您好,请问您解决这个问题了吗?

要回复问题请先登录注册