You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中如何将exploitability平均值绘制到TensorBoard?

解决方法:自定义Callback记录自定义指标到TensorBoard

你说得对,这个np.average(exploitability)属于训练过程外的自定义计算指标,没法直接作为model.compile()里的metrics传入——因为metrics要求是和模型训练直接绑定的、基于输入输出的计算逻辑。不过我们可以通过**自定义Keras回调(Callback)**来实现把这个值写入TensorBoard,步骤如下:

1. 定义自定义回调类

这个类会在每个训练周期(epoch)结束后,自动计算你的exploitability平均值,然后写入TensorBoard日志:

from keras.callbacks import Callback
import tensorflow as tf
import numpy as np

class ExploitabilityLogger(Callback):
    def __init__(self, batch_data, log_dir='./logs'):
        super().__init__()
        self.batch_data = batch_data  # 传入你的batch数据集
        self.log_writer = tf.summary.create_file_writer(log_dir)

    def on_epoch_end(self, epoch, logs=None):
        # 计算exploitability列表
        exploitability = []
        for k in self.batch_data:
            # 关闭预测时的输出日志,避免干扰训练过程
            pred = self.model.predict(self.batch_data[k], verbose=0)
            exploitability.append(np.max(pred))
        
        avg_exploit = np.average(exploitability)
        
        # 将平均值写入TensorBoard
        with self.log_writer.as_default():
            tf.summary.scalar('Average Exploitability', avg_exploit, step=epoch)
        self.log_writer.flush()

2. 修改原训练代码,添加自定义回调

把这个自定义回调和你原有的TensorBoard回调一起传入model.fit()的callbacks参数:

# 保留你原有的TensorBoard初始化
self.tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=False, write_images=True)

# 实例化自定义回调,传入你的batch数据
exploit_logger = ExploitabilityLogger(batch_data=batch)

# 训练时同时启用两个回调
model.fit(batch, target, epochs=2, verbose=0, callbacks=[self.tensorboard, exploit_logger])

关键说明

  • 为什么用on_epoch_end:这个方法会在每个epoch训练完成后触发,刚好对应你原来在训练后计算exploitability的逻辑;如果想每训练一个batch就记录一次,可以把逻辑放到on_batch_end方法,记得把step参数改成当前的训练步数(比如self.model.optimizer.iterations)。
  • 日志目录一致性:确保自定义回调和原生TensorBoard用同一个log_dir,这样所有指标会在TensorBoard的同一个面板里展示。
  • 适配你的batch结构:如果你的batch不是字典/可索引结构,需要调整回调里遍历数据的方式,确保能正确获取每个样本的输入数据用于预测。

这样启动TensorBoard后,你就能在Scalars面板里看到新增的Average Exploitability指标曲线,和loss、accuracy一起展示了。

内容的提问来源于stack exchange,提问作者David Joos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:42:28