TensorBoard 查看 summary 日志文件只有 Graph,没有具体的标量等

本文介绍查看训练模型保存的事件日志文件命令,强调–logdir 参数应传入事件文件所在文件夹。还指出初学者使用 TensorBoard 时可能遇到的问题,即运行命令后浏览器中只有图选项,没有观察对象,并给出错误和正确实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看训练模型保存下来的事件日志文件命令:

# 最后不带 “/”
tensorboard --logdir="./tensorboard/20190802-211034"
# 也可以最后带 “/”
tensorboard --logdir="./tensorboard/20190802-211034/"
# 单引号也可以
tensorboard --logdir=‘./tensorboard/20190802-211034/’

但一定要注意:–logdir 参数传入的是事件文件所在的文件夹,而不是事件文件本身!
事件文件一般如下:
events.out.tfevents.******.******.******

对于初学者可能会遇到的问题就是明明把观察的对象添加到 summary 中,最后运行 tensorboard 命令后,在浏览器中查看却只有图 GRAPHS 的选项,而没有所要观察的对象,如损失项标量:

错误实例:

tf.summary.scalar('loss_1', loss1)
tf.summary.scalar('loss_2', loss2)

merged_summaries = tf.summary.merge_all()

logdir = "tensorboard/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") + "/"

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

# 有些情况下,在 Session 中还有一行代码
summary_results = sess.run(merged_summaries, {x_holder: batch_X, c_holder: one_hot_y, z_holder: batch_z})

但实际上,上面的代码只是把图 Graph 写入到了日志事件文件中,在有、没有最后一行的情况下,tensorflow 程序都能运行不报错,但是却因为拉下一步 writer.add_summary() 而没有将观察的对象写入到日志文件中!

正确实例:

tf.summary.scalar('loss_1', loss1)
tf.summary.scalar('loss_2', loss2)

merged_summaries = tf.summary.merge_all()

logdir = "tensorboard/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") + "/"

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

# 有些情况下,在 Session 中还有一行代码
summary_results = sess.run(merged_summaries, {x_holder: batch_X, c_holder: one_hot_y, z_holder: batch_z}) # 这一步不能拉下,否则没有运行观察对象的命令
writer.add_summary(summary_results, global_step=train_epoch) # 这一步更不能拉下,否则即使运行了观察对象的 summary 命令,也不会写入到日志事件文件中,就会造成查看 tensorboard 时只有一个 GRAPHS 选项!

### 如何使用 TensorBoard 查看模型权重文件 TensorBoard 是 TensorFlow 提供的一款强大的可视化工具,能够帮助开发者监控训练过程中的各项指标、网络结构以及参数变化情况。为了查看模型的权重文件,可以通过以下方式实现。 #### 配置日志记录器 在 TensorFlow 的训练过程中,需要配置 `tf.summary` 来记录模型的权重和其他重要信息。这些信息会被写入到指定的日志目录中,随后可通过 TensorBoard 加载并显示。 以下是具体的操作方法: 1. **定义摘要编写器 (Summary Writer)** 创建一个 `tf.summary.create_file_writer` 对象来管理日志文件的存储位置。 2. **记录权重变量的变化** 在每轮迭代结束时,调用 `tf.summary.scalar` 或其他相关函数将权重值保存至日志文件中。 3. **启动 TensorBoard 并加载日志** 安装完成后,在终端运行如下命令即可访问 TensorBoard 可视化界面: ```bash tensorboard --logdir=./logs/ ``` 下面是一个完整的代码示例用于展示如何记录和查看模型权重: ```python import tensorflow as tf from tensorflow.keras.layers import Dense from tensorflow.keras.models import Sequential # 构建简单的神经网络模型 model = Sequential([ Dense(64, activation='relu', input_shape=(None, 32), name="dense_layer"), Dense(10, activation='softmax') ]) # 初始化优化器和损失函数 optimizer = tf.keras.optimizers.Adam() loss_fn = tf.keras.losses.SparseCategoricalCrossentropy() # 设置日志路径 log_dir = "./logs" writer = tf.summary.create_file_writer(log_dir) @tf.function def train_step(x, y): with tf.GradientTape() as tape: predictions = model(x) loss_value = loss_fn(y, predictions) gradients = tape.gradient(loss_value, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) # 记录每一层的权重 with writer.as_default(): for var in model.trainable_variables: tf.summary.histogram(var.name.replace(':', '_'), var, step=optimizer.iterations) # 假设的数据集 x_train = tf.random.normal([100, 32]) y_train = tf.constant([[i % 10] for i in range(100)], dtype=tf.int32) for epoch in range(5): train_step(x_train, y_train) ``` 以上脚本会在每次更新梯度之后自动把当前各层可学习参数的状态存档下来,并按照时间戳分类整理好以便后续分析[^2]。 当完成上述设置后,只需正常开启 TensorBoard 即可在Scalars或者Histograms标签页下找到对应的历史曲线图代表不同阶段下的权值分布状况[^1]。 #### 注意事项 - 如果希望更直观地理解整个计算流程,则推荐利用 Graph 功能探索张量流动关系;而 Projector 插件则适用于高维嵌入向量降维投影后的聚类效果评估。 - 确认已正确指定了 `--logdir` 参数指向实际存在的包含事件文件(.tfevents.*) 的工作区根目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn-WJW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值