当前位置: 首页 > 面试题库 >

您如何以编程方式读取Tensorboard文件?

洪楷
2023-03-14
问题内容

如何在不启动GUI的情况下如何编写python脚本来读取Tensorboard日志文件,提取损失和准确性以及其他数字数据tensorboard --logdir=...


问题答案:

您可以使用TensorBoard的Python类或脚本来提取数据:

如何从TensorBoard导出数据

如果您想导出数据以在其他地方可视化(例如iPython
Notebook),那也是可能的。您可以直接依赖TensorBoard用来加载数据的基础类:(用于python/summary/event_accumulator.py从一次运行python/summary/event_multiplexer.py中加载数据)或(用于从多个运行中加载数据并保持其组织化)。这些类加载事件文件组,丢弃由TensorFlow崩溃“孤立”的数据,并按标记组织数据。

另一种选择是,有一个脚本(tensorboard/scripts/serialize_tensorboard.py)可以像TensorBoard一样加载日志目录,但是将所有数据作为json写入磁盘,而不是启动服务器。设置该脚本是为了制作“假TensorBoard后端”进行测试,因此其边缘有些粗糙。

使用EventAccumulator

# In [1]: from tensorflow.python.summary import event_accumulator  # deprecated
In [1]: from tensorboard.backend.event_processing import event_accumulator

In [2]: ea = event_accumulator.EventAccumulator('events.out.tfevents.x.ip-x-x-x-x',
   ...:  size_guidance={ # see below regarding this argument
   ...:      event_accumulator.COMPRESSED_HISTOGRAMS: 500,
   ...:      event_accumulator.IMAGES: 4,
   ...:      event_accumulator.AUDIO: 4,
   ...:      event_accumulator.SCALARS: 0,
   ...:      event_accumulator.HISTOGRAMS: 1,
   ...:  })

In [3]: ea.Reload() # loads events from file
Out[3]: <tensorflow.python.summary.event_accumulator.EventAccumulator at 0x7fdbe5ff59e8>

In [4]: ea.Tags()
Out[4]: 
{'audio': [],
 'compressedHistograms': [],
 'graph': True,
 'histograms': [],
 'images': [],
 'run_metadata': [],
 'scalars': ['Loss', 'Epsilon', 'Learning_rate']}

In [5]: ea.Scalars('Loss')
Out[5]: 
[ScalarEvent(wall_time=1481232633.080754, step=1, value=1.6365480422973633),
 ScalarEvent(wall_time=1481232633.2001867, step=2, value=1.2162202596664429),
 ScalarEvent(wall_time=1481232633.3877788, step=3, value=1.4660096168518066),
 ScalarEvent(wall_time=1481232633.5749283, step=4, value=1.2405034303665161),
 ScalarEvent(wall_time=1481232633.7419815, step=5, value=0.897326648235321),
 ...]

size_guidance

size_guidance: Information on how much data the EventAccumulator should
  store in memory. The DEFAULT_SIZE_GUIDANCE tries not to store too much
  so as to avoid OOMing the client. The size_guidance should be a map
  from a `tagType` string to an integer representing the number of
  items to keep per tag for items of that `tagType`. If the size is 0,
  all events are stored.


 类似资料:
  • 报告不能全部以编程方式进行,因为它们的布局会不断发生变化,我们不能每次发生这种变化时都更新我们的软件。

  • 问题内容: 我希望能够获取网页的html并将其保存到,因此可以对其进行一些处理。另外,我该如何处理各种类型的压缩。 我将如何使用Java做到这一点? 问题答案: 这是一些使用Java的URL类的经过测试的代码。我建议比在这里处理异常或将异常传递到调用堆栈方面做得更好。

  • 我找到以下链接来读取JMS队列中的消息及其工作。 https://blogs.oracle.com/soaproactive/entry/jms_step_3_using_the 现在,我想以编程方式读取JMS队列统计信息,如消息数、挂起消息数和消息输入/输出时间等。weblogic或weblogic中是否有可能为此提供任何API? 请帮忙。

  • 问题内容: 我想为Java的玩具语言编写一个编译器。我想生成可运行的.class文件。我想知道执行此操作的最佳库或工具是什么?我知道我可以学习所有指令的二进制格式并建立自己的常量池等,但这似乎应该已经完成​​:没必要重新发明轮子,对吗? 在线搜索我发现了两种不同的Java汇编语言Jasmin和Jamaica,但是只有Jasmin看起来有所维护。 是否存在用于将字节码写入流的Java库?这是Apac

  • 问题内容: 我想从受监视的应用程序内部以编程方式获得等效的输出。我看到可以通过HotSpot诊断Bean触发二进制堆转储,但是我看不到如何获取直方图数据。可能吗 ? 问题答案: 这可能是不是最好的例子/代码,但看看这个 (我认为这仅适用于Hotspot JVM)

  • 问题内容: 我想以编程方式禁用硬件预取。 从使用硬件实现的预取器在英特尔®酷睿™微体系结构上优化应用程序性能以及 如何在32位英特尔®架构上的硬件和软件预取之间进行选择,我需要更新MSR以禁用硬件预取。 以下是相关片段: “通过编写用于更改 寄存器中位的设备驱动程序实用程序,还可以通过编程方式更改DPL预取和L2流预取设置。这种实用程序提供了启用或禁用预取机制的能力,而无需任何服务器停机时间。 下