如何在C ++中使用protobufs编写Tensorboard事件文件?

时间:2018-04-03 00:40:27

标签: tensorflow protocol-buffers tensorboard

使用C ++我能够编写一个包含graphdef而没有问题的事件文件。我使用了EventsWriter :: WriterEvent()API。我在TensorBoard上看起来很棒。

经过深入研究后,我在tensorflow.core.util,tensorflow.core.platform和tensorflow.core.lib.io中找到了以这种格式包装tensorflow :: Event的记录:length,masked CRC长度,数据,掩蔽的数据CRC。 (github source here

但问题是我不想用我的应用程序静态链接到contrib TensorFlow库。相反,我想通过使用我的本地protoc编译头文件( .pb.h)和源代码( .pb.c)使我的应用程序轻量级并与库分离。

我可以使用protobufs创建一个事件文件,但它们在TensorBoard上不可视化。在Tensorboard源上使用调试器时,我在这里启动Tensorboard时会看到一个DataLossError异常:tensorboard / backend / event_processing / event_file_loader.py。 DataLossError异常可能是由于tensorflow :: Event未按上述方式包装的事实。

如果您或任何人都知道在不使用contrib tensorflow库的情况下使用C ++编写TB兼容事件文件的策略,请告知我们。

1 个答案:

答案 0 :(得分:0)

因此,解决方案是使用这些四个字段包装每个事件记录:

  1. uint64(篇)
  2. uint32(蒙面长度的crc)
  3. byte(data [length])
  4. uint32(蒙面的数据crc)
  5. 请参阅WriteRecord()here