在summaries and TensorBoard上完成本教程后,我已经能够使用TensorBoard成功保存和查看数据。是否可以使用TensorBoard以外的其他工具打开此数据?
顺便说一下,我的应用程序是进行非策略学习的。我目前正在使用SummaryWriter保存每个状态-操作-奖励元组。我知道我可以手动存储/训练这些数据,但我认为使用TensorFlow内置的日志记录功能来存储/加载这些数据会更好。
在summaries and TensorBoard上完成本教程后,我已经能够使用TensorBoard成功保存和查看数据。是否可以使用TensorBoard以外的其他工具打开此数据?
顺便说一下,我的应用程序是进行非策略学习的。我目前正在使用SummaryWriter保存每个状态-操作-奖励元组。我知道我可以手动存储/训练这些数据,但我认为使用TensorFlow内置的日志记录功能来存储/加载这些数据会更好。
9条答案
按热度按时间f0brbegy1#
截至2017年3月,EventAccumulator工具has been moved从Tensorflow核心迁移到Tensorboard后端。您仍然可以使用它从Tensorboard日志文件中提取数据,如下所示:
xpcnnkqh2#
很简单,数据实际上可以导出到TensorBoard中Events选项卡下的
.csv
文件中,例如,可以加载到Python中的Pandas Dataframe 中。请确保选中 Data download links 框。如需更自动化的方法,请查看TensorBoard自述文件:
如果您希望导出数据以在其他地方(例如iPython Notebook)进行可视化,也可以直接依赖TensorBoard用于加载数据的底层类:
python/summary/event_accumulator.py
(用于从单次运行加载数据)或python/summary/event_multiplexer.py
(用于从多次运行加载数据,并使其保持有序)。这些类加载事件文件组,丢弃因TensorFlow崩溃而“孤立”的数据,并按标签组织数据。作为另一种选择,有一个脚本(
tensorboard/scripts/serialize_tensorboard.py
),它将像TensorBoard一样加载一个logdir,但将所有数据作为json写入磁盘,而不是启动服务器。该脚本设置为创建“假TensorBoard后端”进行测试,因此它有点粗糙。4si2a6ki3#
我认为数据是以protobufs RecordReader格式编码的。要从文件中获得序列化字符串,您可以使用py_record_reader或使用TFRecordReader操作构建一个图形,并使用Event schema将这些字符串反序列化为protobuf。如果您获得了一个工作示例,请更新此q,因为我们似乎缺少这方面的文档。
cdmah0mi4#
我在以前的一个项目中做了一些类似的事情,正如其他人提到的,主要成分是tensorflows事件累加器
41zrol4v5#
您也可以使用
tf.train.summaryiterator
:要提取./logs
文件夹中的事件,其中仅存在经典标量lr
、acc
、loss
、val_acc
和val_loss
,您可以使用以下GIST:tensorboard_to_csv.pyqvsjd97n6#
当你的tfevent文件中的数据点少于10000个时,Chris Cundy的答案很好用。但是,当你的tfevent文件中的数据点超过10000个时,Tensorboard会自动对它们进行采样,并且最多只给你10000个点。这是一个相当烦人的潜在行为,因为它没有得到很好的记录。请参见https://github.com/tensorflow/tensorboard/blob/master/tensorboard/backend/event_processing/event_accumulator.py#L186。
要绕过它并获得所有数据点,一个有点笨拙的方法是:
pwuypxnk7#
对于tb version〉=2.3,你可以使用
tensorboard.data.experimental.ExperimentFromDev()
简化将tb事件转换为panda Dataframe 的过程。但是,它要求你将日志上传到TensorBoard.dev,这是公开的。有计划在未来将该功能扩展到本地存储日志。https://www.tensorflow.org/tensorboard/dataframe_apinjthzxwz8#
您还可以使用EventFileLoader迭代通过Tensor板文件
zz2j4svz9#
令人惊讶的是,python包
tb_parse
还没有被提及。