【debug】复现老代码,遇到tensorboard的api改变

本文概述了从TensorFlow1到2版本迁移时,特别是在使用TensorBoard时遇到的变化,包括EagerExecution的启用、API的更新、移除Session和Graph等,展示了如何简化代码以提高效率。
摘要由CSDN通过智能技术生成

最近在复现各种代码时候,遇到了版本不匹配问题。每次新建环境太久了,就开始改代码。这里总结一下有哪些点可以改。

从 TensorFlow 1 到 TensorFlow 2 迁移时,TensorBoard 的使用方式也发生了一些变化。这主要是因为 TensorFlow 2 强调更简单和更直观的 API,以及默认启用的 Eager Execution 模式。下面是一些主要的改变和你需要注意的点:

1. Eager Execution 默认启用

TensorFlow 2 默认启用 Eager Execution,这意味着运算会立即执行并返回结果,不再需要在一个会话中手动运行 tf.Session()。这简化了很多开发流程,包括在 TensorBoard 中记录数据。

2. API 更新

  • Summary 写入器tf.summary.FileWriter 被替换为 tf.summary.create_file_writer,这是 TensorFlow 2 中创建写入器的方式。
  • 记录标量和其他摘要:TensorFlow 1 中的 tf.summary.scalartf.summary.image 等函数在 TensorFlow 2 中仍然存在,但使用方式有所不同。在 TensorFlow 2 中,你通常会结合 with writer.as_default() 使用这些函数,而不是创建 tf.Summary 对象。
  • 记录操作:在 TensorFlow 1 中,你可能习惯于创建复合的 tf.Summary 对象,并将它们传递到 FileWriter。在 TensorFlow 2 中,推荐直接在 with writer.as_default(): 块中调用 tf.summary 的各种方法(如 tf.summary.scalar, tf.summary.image 等),它们会自动处理数据的记录。

3. 移除 Session 和 Graph

由于不再需要 tf.Session(),所有相关的代码也应当从 TensorBoard 记录中移除。此外,tf.Graph() 的使用在很多情况下也变得不再必要,因为 Eager Execution 支持动态的图结构。

4. 实例化和使用更简洁

在 TensorFlow 2 中,整个过程更为直接和自动化。你不需要显式地管理多个会话或复杂的图状态,这使得代码更容易编写和理解。

示例代码对比

TensorFlow 1.x:

import tensorflow as tf

logdir = './logs'
sess = tf.Session()
writer = tf.summary.FileWriter(logdir, sess.graph)

value1 = tf.placeholder(tf.float32)
summary = tf.summary.scalar('value1', value1)

sess.run(tf.global_variables_initializer())

for i in range(100):
    summary_str = sess.run(summary, feed_dict={value1: i})
    writer.add_summary(summary_str, i)

writer.close()

TensorFlow 2.x:

import tensorflow as tf

logdir = './logs'
writer = tf.summary.create_file_writer(logdir)

with writer.as_default():
    for i in range(100):
        tf.summary.scalar('value1', i, step=i)
        writer.flush()

writer.close()

通过这些改变,TensorFlow 2 的 TensorBoard 集成更为直接和“Pythonic”,减少了许多冗余和模板代码,使得数据的记录和可视化更加高效和简洁。

案例

在这里插入图片描述

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值