Хранение нескольких полей в lmdb для использования с caffe

Я создаю базу данных lmdb для сети кафе, в которой хранятся различные изображения, например:

txn.put('{:0>10d}'.format(dbCtr),currImageDatum.SerializeToString())

Где я храню две строки в качестве пары ключ-значение. Однако я также хотел бы сохранить некоторые метаданные. В частности, я хотел бы сохранить имя файла, из которого было получено изображение. Насколько я понимаю, value должна быть одной строкой, а не чем-то вроде [currImageDatum.SerializeToString(), 'myImage.jpg'].

Итак, единственный способ, которым я могу это сделать, это:

txn.put('{:0>10d}'.format(dbCtr),currImageDatum.SerializeToString() + '__MY_META_DATA__' + 'myImage.jpg')

а затем, при чтении lmdb, разделить строку значения на часть до '__MY_META_DATA__' и часть после нее.

Это разумный подход? Есть ли другой стандартный способ сделать это?


person user1245262    schedule 11.12.2017    source источник


Ответы (1)


Насколько я знаю, способ, которым слой "Data" caffe считывает Datum из lmdb, довольно строг, и вы не можете легко изменить его.
Если вы рассматриваете альтернативы lmdb, загляните в "HDF5Data", который гораздо более гибкий.

person Shai    schedule 12.12.2017