Какой формат ввода у кафе?

Я пытаюсь использовать caffe для распознавания звука, но не может найти документ для его формата ввода.

Я хочу использовать leveldbТаким образом, я должен создать ключ и значение для каждой записи, которая является парой строки метки и массива байтов данных.

Кажется, что ни один документ не описывает это, и после того, как я нашел значение написано Datum.SerializeToString()Я не могу найти где Datum это и потом потеряно.

Кто-нибудь знает, как конвертировать записи без изображений в leveldb записи для caffe? Спасибо!

2

Решение

Объект Datum определяется с помощью protobuf. Посмотреть здесь:
https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto#L30-L41

Генерирует файл caffe.pb.h в .build_release/src/caffe/proto с классом Datum, Вы можете взглянуть туда, чтобы понять, как работает этот объект.

1

Другие решения

leveldb, lmdb а также HDF5 В настоящее время основные форматы для подачи данных в Caffe. MemoryData Слой также позволяет вводить данные в память, поэтому можно использовать любой формат ввода и использовать интерфейсы Caffe на python или c ++ для заполнения больших двоичных объектов данных.

Если вы уже настроены на leveldb, этот обсуждение вопросов кофе может быть полезным.

Ниже приведен пример заполнения leveldb с питоном. Требуется Пикаф и Пливель. Это адаптировано из проблемы с кофе Сообщение от Zackory. Это не характерно для изображений, если вы представляете каждый пример в форме 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 пример Вот.

3

По вопросам рекламы [email protected]