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中的“原型”:/