C++ 什么';s caffe&x27;什么是输入格式?

C++ 什么';s caffe&x27;什么是输入格式?,c++,caffe,leveldb,C++,Caffe,Leveldb,我尝试使用caffe进行音频识别,但找不到输入格式的文档 我想使用leveldb,因此我必须为每个记录创建一个键和一个值,这是一对标签字符串和数据字节数组 似乎没有任何文档描述这一点,在我发现值是由Datum.SerializeToString()编写的之后,我找不到Datum的位置,然后就丢失了 有人知道如何将非图像记录转换为caffe的leveldb记录吗?谢谢 基准对象由protobuf定义。请看这里: 它在.build\u release/src/caffe/proto中用类Datum

我尝试使用
caffe
进行音频识别,但找不到输入格式的文档

我想使用
leveldb
,因此我必须为每个记录创建一个键和一个值,这是一对标签字符串和数据字节数组

似乎没有任何文档描述这一点,在我发现值是由
Datum.SerializeToString()
编写的之后,我找不到
Datum
的位置,然后就丢失了


有人知道如何将非图像记录转换为
caffe
leveldb
记录吗?谢谢

基准对象由protobuf定义。请看这里:


它在
.build\u release/src/caffe/proto
中用类
Datum
生成一个文件
caffe.pb.h
。您可以在那里查看以了解此对象的工作原理

leveldb
lmdb
HDF5
是目前向Caffe提供数据的主要格式。“代码”>内存数据> /Cuffice层也可以在内存中输入,因此可以使用任何输入格式,并使用CAFE的Python或C++接口填充数据块。 如果您已经设置了
leveldb
,那么讨论caffe问题可能会很有用

下面是用python填充
leveldb
的示例。它需要Pycafe和plyvel。这是根据作者的帖子改编的。只要您以CxHxW的形式表示每个示例,其中任何或所有示例都可以等于1:

import caffe

db = plyvel.DB('train_leveldb/', create_if_missing=True, error_if_exists=True, write_buffer_size=268435456)
wb = db.write_batch()
count = 0
for file in dataset:
    mat = # load numpy array from file

    # Load matrix into datum object
    datum = caffe.io.array_to_datum(mat)

    wb.put('%08d_%s' % (count, file), datum.SerializeToString())

    count += 1

    # Write to db in regular intervals
    if count % 1000 == 0:
        # Write batch of images to database
        wb.write()
        del wb
        wb = db.write_batch()

    # Write last batch of images
    if count % 1000 != 0:
        wb.write()

我发现构造lmdb要简单得多
lmdb
示例。

我找到了protobuf的官方文件:我被“proto”混淆了,因为我认为它是caffe中的“原型”:/