Как написать файл событий Tensorboard, используя только protobufs в C++?

Используя C++, я смог без проблем написать файл событий, содержащий graphdef. Я использовал API EventsWriter:: WriterEvent (). Я отлично выглядел на TensorBoard.

После глубокого погружения я обнаружил код в tenorsflow.core.util, tenorflow.core.platform и tenorsflow.core.lib.io, который переносит тензор потока:: событие в запись в следующем формате: длина, замаскированный CRC длины, данные, замаскированные CRC данных. ( источник github здесь)

Но проблема в том, что я не хочу статически связывать библиотеку TensorFlow с моим приложением. Вместо этого я хотел бы сделать мое приложение легким и отделенным от библиотеки, используя мои локальные скомпилированные в протоколе заголовки (.pb.h) и исходные коды (.pb.c).

Я могу создать файл событий с использованием protobufs, но они не отображаются на TensorBoard. При использовании отладчика в источнике Tensorboard, я вижу исключение DataLossError при запуске Tensorboard здесь: tenorboard / backend / event_processing / event_file_loader.py. Исключение DataLossError, вероятно, связано с тем, что тензор потока:: Событие не упакован, как описано выше.

Если вам или кому-либо известна стратегия написания TB-совместимых файлов событий на C++ без использования библиотеки contrib tenorflow, пожалуйста, дайте мне знать.

1 ответ

Таким образом, решение состоит в том, чтобы обернуть каждую запись о событии этими полями:

  1. uint64 (длина)
  2. uint32 (длина маски в маске)
  3. байт (данные [длина])
  4. uint32 (замаскированный CRC данных)

Смотрите WriteRecord() здесь

Другие вопросы по тегам